Data Base

Oracle) INSTR,SUBSTR,REPLACE 함수

5_jinseok12 2018. 4. 8. 19:27
728x90


LENGTH : 입력된 문자열의 길이 값을 출력해준다

LENGTH(컬럼 또는 문자열)





INITCAP() 함수 : 첫글자를 대문자로 바꿔준다


ex) S INITCAT('hello');     //괄호안에 반드시 문자가 들어가야한다. 어떻게 변환이 되는지 확인해보자 

     F dual;         //오라클에서 만들어놓은 빈 테이블, 함수에 대한 결과값을 보고 싶을 때 사용

// from 뒤에 dual을 사용한다. emp 같은 경우는 정보를 가져 오는 것


UPPER() / LOWER() 함수

    W LOWER(ename) = 'ford';     // 데이터를 대소문자로 구분하지 않고 소문자로 바꿔준다

      UPPER(ename) =  '   ' ;        // 어떤 데이터든 구분하지 않고 대문자로 바꿔준다



INSTR ( ) 함수 : 주어진 문자열이나 컬럼에서 특정 글자의 위치를 찾아주는 함수


INSTR( 문자열, '찾고자 하는 숫자', 어디서 찾을 것인지 시작위치, 몇번째)


첫번째 문자를 기준으로 3번째(-)가 나오는 위치를 출력.


시작위치를 -로 변경하고 비교하기

뒤에서부터 세번째= 4

bar를 기준으로 3번째 위치 출력


select 'A-B-C-D-E', INSTR('A-B-C-D-E','-',1,1) "INSTR" FROM dual

-> 'A-B-C-D-E' 중  '-' 를 기준으로 1번째에서부터 1번째 위치 출력

 

select 'A-B-C-D-E', INSTR('A-B-C-D-E','-',1,2) "INSTR" FROM dual

-> 'A-B-C-D-E' 중  '-' 를 기준으로 1번째에서부터 2번째 위치 출력


 


 

INSTR( ) 를 사용할 때 INSTR( TEL,')') 을 입력하면 TEL의 내용중 ')'의 내용이 가 포함된 것을 출력해준다.

INSTR 를 사용한것과 사용하지 않은 것을 위에 사진을 통해 비교해보면 쉽게 이해할 수 있다.


 

 

마지막에 입력한 명령어를 보면 INSTR(TEL, ')' )-1 에서 -1을 한 이유는 02) 에서 )를 빼고 02만 출력할때 사용한다,

 

 

보통 INSTR 과 SUBSTR을 같이 사용하는 경우가 많다.

 

SUBSTR()함수

SUBSTR('문자열' 또는 컬럼명,LENGTH)

이 함수의 기능은 주어진문자열에서 특정 길이의 문자만 골라낼때 사용하는 함수이다.

 

SUBSTR을 사용할 때 주의할 점

-를 붙이지 않으면 왼쪽에서 오른쪽으로 검색해서 글자를 골라내는데

-를 붙이면 오른쪽에서 왼쪽으로 검색을 한 후 왼쪽에서 오른쪽으로 글자수를 골라낸다

중요하고 자주 사용하는 함수이므로 꼭 이해하고 넘어가야 한다

 

SUBSTRB()함수

SUBSTR 함수와 문법은 동일하지만 차이점이 있다면 byte의 출력 차이이다.

영어일 경우 동일하지만 한글같이 다른 글자들은 결과가 다르게 나올 수 있으므로 주의해야 한다.

 

 

 

SUBSTR(TEL,1,INSTR(TEL,')'-1) : 이렇게 보면 SUBSTR과 INSTR을 같이 사용해서 복잡해보일텐데 사실 단순하다

SUBSTR 을 통해 TEL의 컬럼에서 1번째부터 INSTR(TEL,')'-1) 까지 출력을 해준다,

다시, INSTR(TEL,')'-1) 은 TEL의 컬럼에서 ')' 이 나올때까지 출력하지만 -1 이 있으므로 ) 는 빼고 출력한다

즉 위에 사진을 보면 지역번호만 알아내고 싶을 때 사용할 수 있다.


 

 

REPLACE() 함수

REPLACE('문자열 OR 컬럼명','문자1','문자2')

예를 들어 주민번호나 이름 등을 ** -- 등의 기호를 사용해서 가릴 때 사용한다.

 

위에 사진을 해석해보면 emp 테이블에 ename 컬럼에서 SUBSTR 함수를 통해

2글자를 REPLECE 함수를 사용하여 **로 가려본다. DEPTNO=10으로 지정

 

 


 

 

위에 사진도 마찬가지로 SUBSTR을 통해 3번째부터 2글자까지 --로 가릴 수 있다.

 

 

ex) 문제 1

 Student 테이블에서 deptno1이 101번인 학생들의 이름과 주민번호를 출력하되

 주민번호의 뒤 7자리는 '-' 과 '/' 를 통해 가리고 출력하라

 

 

 

 

 

ex) 문제 2

Student 테이블에서 아래 그림과 같이 depton1 이 102 번인 학생들의

이름과 전화번호, 전화번호에서 국번 부분을 '*' 처리하여 출력하라

(국번은 3자리로 설정)

 

 


문제 3)

Student 테이블에서 아래 그림과 같이 depton1 이 102 번인 학생들의

이름과 전화번호, 전화번호에서 마지막 4자리를 * 로 표시하시오

(국번은 3자리로 설정)


 



반응형

'Data Base' 카테고리의 다른 글

Oracle) 단일행 Sub Query  (0) 2018.05.04
Oracle) MAX/MIN 함수, RANK 함수  (0) 2018.05.04
Oracle) DECODE 함수 , TO_CHAR 함수 , CASE문  (0) 2018.04.09
Oracle) 다양한 연산자 활용  (0) 2018.04.05
Oracle) 기본 명령어  (0) 2018.04.05