Dico

SQL String Functions

  • 민갤

문자 함수

대소문자 변환 함수

UPPER(char)  대문자로 변환한다.
LOWER(char)  소문자로 변환한다.
INITCAP(char)  첫 글자만 대문자로 변환한다.
SELECT 'Oracle'
    , UPPER('Oracle')   --ORACLE
    , LOWER('Oracle')   --oracle
    , INITCAP('Oracle') --Oracle
 FROM dual;
SELECT last_name
 FROM employees
WHERE LOWER(last_name) = 'lee';

LENGTH

문자 길이를 반환한다.

LENGTH(char)

  • LENGTHB(char)

     메모리를 차지하는 Byte(UTF-8)를 기준으로 한다.

     한글 1문자당 3Byte.

 

SELECT LENGTH('Oracle')  --6
    , LENGTHB('Oracle')  --6
    , LENGTH('오라클')   --3 한글 1문자당 1Byte
    , LENGTHB('오라클')  --9 한글 1문자당 3Byte (UTF-8)
 FROM dual;

CONCAT

문자열을 결합한다.

간단히 '||'로 결합할 수 있다.

CONCAT(char|컬럼, 컬럼)
SELECT CONCAT('20', hire_date)
    , '20' || hire_date
 FROM employees;

SUBSTR

문자열의 일부를 추출한다.

SUBSTR(대상, 시작 위치, 추출할 개수)

  • 시작 위치

     - 양수 : 앞쪽 1부터 시작한다.

     - 음수 : 뒤쪽부터 시작한다.

SELECT SUBSTR('ORACLE', 1, 2)  -- OR
    , SUBSTR('ORACLE', -2, 2)  -- LE
 FROM dual;

INSTR / INSTRB

특정 문자의 위치를 반환한다.

시작 위치와 검색 결과의 순번의 기본값은 1이다.

INSTR(대상, 검색 문자, 시작 위치, 검색 결과의 순번)

  • INSTRB : Byte수를 기준으로 한다.
SELECT INSTR('ORACLE SQL', 'L', 1, 2) -- 10
    , INSTR('오라클', '라')  -- 2
    , INSTRB('ORACLE', 'A')  -- 3
    , INSTRB('오라클', '클') -- 7
 FROM dual;

LPAD / RPAD (Left/Right Padding)

L : 컬럼이나 대상 문자열을 오른쪽에 나타내고, 남은 왼쪽을 특정 기호로 채운다.

R : 컬럼이나 대상 문자열을 왼쪽에 나타내고, 남은 오른쪽을 특정 기호로 채운다.

Left와 Right는 채울 문자의 위치를 의미한다.

LPAD(대상, 크기, 채울 문자)
SELECT LPAD('ORACLE', 10, '*') --****ORACLE
    , RPAD('oracle', 15, '^')  --oracle^^^^^^^^^
 FROM dual;

TRIM

특정 문자 또는 공백을 잘라내고 남은 문자열을 반환한다.

공백과 NULL은 문제를 일으킬 수 있으므로 이를 방지하기 위해 사용한다.

  • TRIM(char)

     앞뒤의 공백 문자를 모두 제거한다.

  • TRIM(제거문자 FROM 대상문자) 

     특정 문자를 제거한다. 제거하려는 문자가 맨앞이나 맨뒤에 위치해야만 지울 수 있다.

  • LTRIM

     문자열의 왼쪽(앞)의 공백 문자들을 제거한다.

  • RTRIM

     문자열의 오른쪽(뒤)의 공백 문자들을 제거한다.

SELECT TRIM('   ORACLE   ')   --'ORACLE'
    , LTRIM('   ORACLE   ')   --'ORACLE   '
    , RTRIM('   ORACLE   ')   --'   ORACLE'
    , TRIM('O' FROM 'ORACLE') --'RACLE'
    , TRIM('E' FROM 'ORACLE') --'ORACL'
    , TRIM('R' FROM 'ORACLE')       -- error
    , TRIM('O' FROM '   ORACLE   ') -- error
 FROM dual;