ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle 문자열 함수의 모든것
    DataBase/Oracle 2024. 8. 11. 22:05
    반응형

     

    문자열 소문자 대문자

    --대문자 -> 소문자
    SELECT 'ABCDef', LOWER('ABC') FROM dual;
    
    --소문자 -> 대분자
    SELECT 'ABCde', UPPER('ABCde') FROM dual;
    
    --첫글자만 대문자, 나머지는 소문자로
    SELECT 'aBCDEF', initcap('aBCDEF') FROM dual;

     

     

    문자열 연결

    --문자열 연결
    SELECT CONCAT('kkk', CONCAT('abc', 'def')) FROM dual;
    SELECT CONCAT(CONCAT(CONCAT(CONCAT('사원의 이름은 ', ename), '이고, 직무는'), job),'입니다')  FROM emp;
    SELECT '사원들의 이름은' || ename || '이고, 직무는' || job || '입니다' FROM emp;

    문자열 연결의 경우 CONCAT함수를 사용한다. 입력받은 두 문자열을 합치는데, 중복하여 사용이 가능하다.

    CONCAT함수를 사용하지 않고 SELECT문에서 || 사용해서 문자열을 편집하여도 동일한 결과를 가지고온다.

     

     

    문자열길이구하기

     

    --문자열의 길이 , 영어의 경우 1byte, 한글의 경우 UTF-8에서는 3byte, UTF-16에서는 2byte,
    SELECT LENGTH('abcd'), lengthb('abcd'), LENGTH ('안녕하세요'), LENGTHB('안녕하세요')  FROM dual;

    LENGTH를 사용하여 문자열의 길이를 가지고 올 수 있다.  LENGTHB를 사용하여 해당 문자열의 BYTE 크기를 구할 수 있다. 영어의 경우 1글자당 1BYTE이며 한글의 경우  UTF-8기준 1글자당 3BYTE이다.

     

    문자열 잘라내기

    --문자열 잘라내기
    SELECT substr('abcd', 3), SUBSTRB('abcd', 3)  FROM dual; 
    
    SELECT substr('안녕하세요', 2), SUBSTRB('안녕하세요', 12) FROM dual;

    SUBSTR함수를 사용하여 문자열을 잘라낼 수 있다. 입력받은 문자열 뒤에 N 을 입력받는다면 N번째 글자부터 나머지 문자열 끝까지의 결과를 가지고 온다. 

    오라클의 경우 첫번째 글자가 1로 시작한다. 

     

    -- n 부터 m 까지 글자 잘라오기 시작점포함하여 m개까지 가지고온다. 
    SELECT SUBSTR('abcdefghi', 3, 4), SUBSTR('동해물과 백두산이', 3,4) FROM dual ;

    SUBSTR의 경우 '문자열', N, M 이렇게 N,M  을 선언하게 된다면 해당 문자열의 N번째에서 M까지 결과를 가지고온다. 

    위의 결과는 3번째인 c부터 글자를 가져와 cdef를 출력하고, 3번째 글자인 '물'부터 '물과 백' 이렇게 띄워쓰기가 포함되어 4번째까지 결과를 가지고온다.

     

     

    문자열 찾기

    SELECT INSTR('abcdabcdabcd', 'bc'),
    	   INSTR('abcdabcdabcd', 'bc', 3), 
           INSTR('abcdabcdabcd', 'bc', 3, 2) 
    FROM dual;

    INSTR 함수를 사용하여 문자열 위치를 찾을 수 있다. 

    우선 첫번째의 경우 해당 문자열에서 'bc'를 찾아온다. 'bc'가 시작되는 구간이 2를 출력하게 된다.

    두번째의 경우 'bc'의 문자열을 찾는데, 뒤에 숫자를 입력한다면 n만큼 건너 뛴 다음 문자열을 찾게 된다.

    1 2 3 4 5 6 7 8 9 10
    a b c d a b c d a b

     

    두번째의 경우 'bc'에 해당하는 문자열을 3번째 건너 뛴 후부터 찾는다 고로 2,3번째의 'bc'에서 처리되지않고, 6번째에 있는 'bc'의 위치가 출력되어 6의 값이 출력되어나온다.

     

    세번째의 경우 n, m 을 입력하게 된다면 n만큼 건너 뛴 다음, m번째에 속하는 문자열을 찾는다.

    3만큼 건너뛰어  4에 위치한 'd'부터 해당 문자열 'bc'를 탐색하게 되는데, 6,7번에 속하는 'bc'는 m=2이였으므로 첫번째로 찾는 경우이므로 스킵이되고, 다음 위치에 속하는 'bc' 즉 10을 반환하게 된다.

     

    SELECT instr('abcdef', 'zzz') FROM dual;

     

    만약 찾는 문자열이 없다면 0을 반환하게 된다.

     

    문자열 위치를 특정하여 해당 문자열이 포함되어있는지 확인

    SELECT ename FROM emp WHERE INSTR(ename, 'A')>1;

    INSTR 를 사용하여 해당 값에 조건을 제시한다면 특정문자가 포함 된 문자열의 세부적인 위치까지 설정이 가능하다.

    위의 경우 EMP 테이블에서 ENAME의 값중에 A가 속한 값들을 불러 오는데 >1 이므로 첫번째가 아닌 두번째 글자부터 A가 포함된 ENAME항목들을 가지고오게 된다.

     

    좌측, 우측 정렬 LPAD, RPAD

    SELECT '문자열', lpad('문자열', 40), 
    		RPAD('문자열', 20), 
            RPAD('문자열', 20 , '_'), 
            LPAD('문자열', 20, '_')  
    FROM dual;

    LAPD를 사용하여 문자열과, N를 설정해준다면 좌측에 N만큼의 공백을 만들어준다.

    RPAD를 사용한다면 N만큼의 우측 공백을 설정해준다.

    LPAD, RPAD 의 경우 공백이 아닌 특정 문자를 넣으려고 한다면 N 뒤에 문자를 지정해주면 해당 문자로 공백이 채워진다.

     

    좌측, 우측, 좌우측 공백제거 TRIM

    SELECT '         문자열           ', 
    		LTRIM('         문자열           '), 
            RTRIM('         문자열           '), 
            TRIM(('         문자열           '))  
    FROM dual;
    
    SELECT RTRIM('           가나다라            ') FROM dual;

    좌우측에 공백이 포함된 경우 좌측 공백 제거를 원하는 경우 LTRIM, 우측 공백 제거를 원하는 경우 RTRIM

    좌우측 공백 제거를 원한다면 TRIM을 사용하면된다.

     

    문자열 변경

    SELECT 'abcdefg', REPLACE ('abcdefg', 'abc', 'kkkkkk') FROM dual;

    특정 문자열을 변경하려고한다면 REPLACE함수를 사용 하여 변경이 가능하다.

    첫번째로 입력받은 문자열에서, 두번재로 입력 받은 문자를 찾아, 세번째로 입력받은 문자로 변경해준다.

    위의 경우 abcdefg값과  REPLACE사용한 경우 kkkkkkdefg 의 값으로 변경되어 출력되는 것이 확인가능하다.

    반응형

    'DataBase > Oracle' 카테고리의 다른 글

    Oracle - Having  (0) 2024.08.13
    Oracle - Group by  (0) 2024.08.13
    Oracle - 그룹함수 (avg, sum, min, max)  (0) 2024.08.12
    Oracle - DECODE, CASE 함수  (0) 2024.08.12
    Oracle - 날짜함수의 모든 것  (0) 2024.08.12

    댓글

Designed by Tistory.