Oracle SQL - 함수(FUNCTION) - 문자열 함수

여름·2020년 12월 10일
0

Oracle SQL

목록 보기
12/13

함수 FUNCTION

▹ 특정 기능을 수행하여 하나의 결과를 반환하도록 설계된 모듈
▹ 컴파일되어 실행 가능한 형태로 제공
▹ 문자열, 숫자, 날짜, 변환, 집계함수의 형태로 제공

📕 문자열 함수
▹ 문자열 조작한 결과를 반환
▹ 문자열 연산자 '||' : 자바의 문자열 연산자 '+'와 같이 두 문자열을 결합하여 하나의 문자열로 반환
예)
SELECT 'Oracle' ||', '|| 'Modeling' FROM DUAL;

** DUAL은 시스템이 제공해주는 가상의 TABLE

1) CONCAT
▹ 주어진 두 개의 문자열을 결합하여 하나의 문자열을 반환
▹ '||' 연산자와 같은 기능
(매개변수 2개 --> 매개변수 : 함수가 실행되어지기위해 자료를 외부에서 받는 기억장소)

     (사용형식)

    CONCAT(c1, c2)

▹c1과 c2를 결합하여 결과를 반환

2) INITCAP
▹ 단어의 선두문자만 대문자로 출력
▹ 선두문자 빼고 나머지는 소문자로 출력하는게 INITCAP의 기능
▹ 보통 이름 출력시 사용

     (사용 형식)

    INITCAP(c1)

▹c1에 포함된 단어의 첫 글자를 대문자로 변환

3) UPPER, LOWER
▹ 주어진 문자열에 포함된 글자를 대문자(UPPER), 소문자(LOWER)로 변환하여 반환

     (사용형식)

    UPPER(c), LOWER(c)

4) ASCII, CHR
▹ ASCII : 주어진 문자자료c의 첫글자를 ASCII 코드값으로 변환
▹ CHR : 주어진 숫자(정수,1~65535)를 ASCII 코드값으로 변환

     (사용형식)

    ASCII(c), CHR(n)

5) LPAD, RPAD
▹ 특정문자열(패턴)을 삽입할 때 사용

     (사용형식)

    LPAD(c, n [,parretn]), RPAD(c, n [,pattern])

▹ 주어진 문자열 'c'를 길이 'n'의 기억공간에 왼쪽부터 채우고(RPAD) | 오른쪽부터 채우고(LPAD)
남는 공간은 'pattern'으로 정의된 문자열을 채움
▹ 'pattern'이 생략되면 공백으로 채워짐 (좌우정렬)

6) LTRIM, RTRIM, TRIM
▹ 주어진 문자열에서 왼쪽(LTRIM) 또는 오른쪽(RTRIM)에 존재하는 문자열을 찾아 삭제할 때 사용
▹ 양쪽에 존재하는 공백을 제거할 때는 TRIM 사용

     (사용형식)

    LTRIM(c1 [,c2]), LTRIM(c1 [,c2]) TRIM(c1)

▹ c2가 생략되면 공백을 삭제

7) SUBSTR(c,n1[,n2])
▹ 주어진 문자열에서 n1에서 시작하여 n2(갯수)만큼의 부분 문자열을 추출하여 반환
▹ n2가 생략되면 n1이후의 모든 문자여을 추출하여 반환
▹ n2가 음수이면 뒤에서부터 처리됨
▹ n1은 1부터 counting (0번부터 존재하는 자바와 다르게 오라클은 1번부터 존재함)

8) REPLACE
▹ 주어진 문자열 c1에서 c2를 c3로 대치(치환) 시킴
▹ c3가 생략되면 c2를 제거함

     (사용형식)

    REPLACE (c1, c2 [,c3])

Q. 상품테이블에서 상품명 중 '대우'를 찾아 'Apple'로 변경하시오.

    SELECT PROD_ID,
           PROD_NAME,
           REPLACE(PROD_NAME,'대우','Apple')
      FROM PROD
     WHERE PROD_NAME LIKE '%대우%'; 
     
    SELECT PROD_ID,
           PROD_NAME,
           REPLACE(PROD_NAME,'대우',)
      FROM PROD
     WHERE PROD_NAME LIKE '%대우%';
     
    SELECT PROD_ID,
           PROD_NAME,
           REPLACE(PROD_NAME,'')   --단어 내부의 공백을 없애는 방법 REPLACE
      FROM PROD
     WHERE PROD_NAME LIKE '%대우%'; 
     

9) LENGTH(c), LENGTH(c)
▹ 주어진 문자열에서 글자수(LENGTH) 또는 기억공간의 크기(BYTE수, LENGTHB)를 반환

0개의 댓글