오라클
<출처> http://sixthgo.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%95%A8%EC%88%98-%EC%A0%95%EB%A6%AC
◈ 문자열 처리 함수(Character Functions)
1. CONCAT(char1, char2)
- CONCAT 함수는 Concatenation의 약자로 두 문자를 결합하는 역할을 한다.
( "||" 연산자와 같은 역할을 한다. )
SQL>SELECT CONCAT('Oracle', ' Korea') NAME FROM dual ;
NAME
-------------
Oracle Korea
2. INITCAP(char)
- 주어진 문자열의 각 단어의 첫 번째 문자를 대문자로 변환. 각 단어는 공백으로 분리.
SQL>SELECT INITCAP('kim jung sick') NAME FROM dual ;
NAME
-------------
Kim Jung Sick
3. LOWER(char)
- 문자열을 소문자로 변환.
SQL>SELECT LOWER('KIM JUNG SICK') NAME FROM dual ;
NAME
-------------
kim jung sick
4. UPPER(char)
- 문자열을 대문자로 변환 시켜 줍니다.
SQL>SELECT UPPER('kim jung sick') NAME FROM dual ;
NAME
--------------
KIM JUNG SICK
5. LPAD(char1, n [,char2])
- 왼쪽에 문자열을 끼어 놓는 역할을한다.
n은 반환되는 문자열의 전체 길이를 나타내며,
char1의 문자열이 n보다 클 경우 char1을 n개 문자열 만큼 반환함.
SQL>SELECT LPAD('JUNG-SICK', 10, '*') NAME FROM dual ;
NAME
------------
*JUNG-SICK
6. RPAD(char1, n [,char2])
- LPAD와 반대로 오른쪽에 문자열을 끼어 놓는 역할을 한다.
SQL>SELECT RPAD('JUNG-SICK', 10, '*') NAME FROM dual ;
NAME
------------
JUNG-SICK*
7. SUBSTR(char, m ,[n])
- SUBSTR함수를 이용하여 m 번째 자리부터 길이가 n개인 문자열을 반환한다.
m이 음수일 경우에는 뒤에서 M번째 문자부터 반대 방향으로 n개의 문자를 반환한다.
SQL>SELECT SUBSTR('JUNG-SICK', 3, 3) NAME FROM dual ;
NAME
-----------
NG-
-- 뒤에서부터 자를 경우
SQL>SELECT SUBSTR('JUNG-SICK', -3, 3) NAME FROM dual ;
NAME
-----------
ICK
8. LENGTH(char1)
- 문자열의 길이를 리턴.
SQL>SELECT LENGTH('JUNG-SICK') TEST FROM dual ;
TEST
----------
9
9. REPLACE(char1, str1, str2)
- REPLACE는 문자열의 특정 문자를 다른 문자로 변환 한다.
SQL> SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM DUAL;
Changes
--------------
BLACK and BLUE
SQL> SELECT REPLACE('JACK and JUE','JA','BL') "Changes" FROM DUAL
Changes
------------
BLCK and JUE
-- 대소문자를 구분한다는 것을 알수 있음.
SQL>SELECT REPLACE('JACK and JUE','j','BL') "Changes" FROM DUAL
Changes
------------
JACK and JUE
10. INSTR
- 문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환한다.
- 지정한 문자열이 발견되지 않으면 0이 반환됨.
-- 지정한 문자 OK가 발견되지 않아서 0이 반환 됨.
SQL>SELECT INSTR('CORPORATE FLOOR','OK') "Instring" FROM DUAL
Instring
----------
0
-- OR이 있는 위치 2를 반환 한다. 왼쪽부터 비교를 한다는 것을 알 수 있음.
SQL>SELECT INSTR('CORPORATE FLOOR','OR') "Instring" FROM DUAL
Instring
----------
2
-- 왼쪽에서 3번째부터 시작을 해서 비교를 한다. 2번째 OR의 위치가 반환 됨.
SQL>SELECT INSTR('CORPORATE FLOOR','OR', 3) "Instring" FROM DUAL
Instring
----------
5
-- 왼쪽에서 3번째부터 시작해서 비교를 하는데
OR이 두 번째 검색되는 지점의 위치를 반환 한다.
SQL> SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) "Instring" FROM DUAL;
Instring
----------
14
11. TRIM
- 특정한 문자를 제거 한다.
- 제거할 문자를 입력하지 않으면 기본적으로 공백이 제거 됨.
- 리턴값의 데이터타입은 VARCHAR2.
-- 0을 제거
SQL>SELECT TRIM(0 FROM 0009872348900) "TRIM Example" FROM DUAL;
TRIM Example
------------
98723489
-- 어떤 문자도 입력하지 않으면 기본적으로 공백이 제거 됨.
SQL>SELECT NVL(TRIM (' '),'공백') "TRIM Example" FROM DUAL
TRIM Example
------------
공백
-- TRIM을 사용한 위에 예제와 사용하지 않은 아래 예제의 결과 값이 다름을 알 수 있다.SQL>SELECT NVL(' ','공백') "TRIM Example" FROM DUAL
TRIM Example
------------
12. LTRIM
SQL>SELECT LTRIM('xyxXxyLAST WORD','xy') "LTRIM example" FROM DUAL;
LTRIM example
------------
XxyLAST WORD
13. RTRIM
SQL>SELECT RTRIM('BROWNINGyxXxy','xy') "RTRIM example" FROM DUAL;
RTRIM examp
-----------
BROWNINGyxX
◈ 문자열 처리 함수(Character Functions)
1. CONCAT(char1, char2)
- CONCAT 함수는 Concatenation의 약자로 두 문자를 결합하는 역할을 한다.
( "||" 연산자와 같은 역할을 한다. )
SQL>SELECT CONCAT('Oracle', ' Korea') NAME FROM dual ;
NAME
-------------
Oracle Korea
2. INITCAP(char)
- 주어진 문자열의 각 단어의 첫 번째 문자를 대문자로 변환. 각 단어는 공백으로 분리.
SQL>SELECT INITCAP('kim jung sick') NAME FROM dual ;
NAME
-------------
Kim Jung Sick
3. LOWER(char)
- 문자열을 소문자로 변환.
SQL>SELECT LOWER('KIM JUNG SICK') NAME FROM dual ;
NAME
-------------
kim jung sick
4. UPPER(char)
- 문자열을 대문자로 변환 시켜 줍니다.
SQL>SELECT UPPER('kim jung sick') NAME FROM dual ;
NAME
--------------
KIM JUNG SICK
5. LPAD(char1, n [,char2])
- 왼쪽에 문자열을 끼어 놓는 역할을한다.
n은 반환되는 문자열의 전체 길이를 나타내며,
char1의 문자열이 n보다 클 경우 char1을 n개 문자열 만큼 반환함.
SQL>SELECT LPAD('JUNG-SICK', 10, '*') NAME FROM dual ;
NAME
------------
*JUNG-SICK
6. RPAD(char1, n [,char2])
- LPAD와 반대로 오른쪽에 문자열을 끼어 놓는 역할을 한다.
SQL>SELECT RPAD('JUNG-SICK', 10, '*') NAME FROM dual ;
NAME
------------
JUNG-SICK*
7. SUBSTR(char, m ,[n])
- SUBSTR함수를 이용하여 m 번째 자리부터 길이가 n개인 문자열을 반환한다.
m이 음수일 경우에는 뒤에서 M번째 문자부터 반대 방향으로 n개의 문자를 반환한다.
SQL>SELECT SUBSTR('JUNG-SICK', 3, 3) NAME FROM dual ;
NAME
-----------
NG-
-- 뒤에서부터 자를 경우
SQL>SELECT SUBSTR('JUNG-SICK', -3, 3) NAME FROM dual ;
NAME
-----------
ICK
8. LENGTH(char1)
- 문자열의 길이를 리턴.
SQL>SELECT LENGTH('JUNG-SICK') TEST FROM dual ;
TEST
----------
9
9. REPLACE(char1, str1, str2)
- REPLACE는 문자열의 특정 문자를 다른 문자로 변환 한다.
SQL> SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM DUAL;
Changes
--------------
BLACK and BLUE
SQL> SELECT REPLACE('JACK and JUE','JA','BL') "Changes" FROM DUAL
Changes
------------
BLCK and JUE
-- 대소문자를 구분한다는 것을 알수 있음.
SQL>SELECT REPLACE('JACK and JUE','j','BL') "Changes" FROM DUAL
Changes
------------
JACK and JUE
10. INSTR
- 문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환한다.
- 지정한 문자열이 발견되지 않으면 0이 반환됨.
-- 지정한 문자 OK가 발견되지 않아서 0이 반환 됨.
SQL>SELECT INSTR('CORPORATE FLOOR','OK') "Instring" FROM DUAL
Instring
----------
0
-- OR이 있는 위치 2를 반환 한다. 왼쪽부터 비교를 한다는 것을 알 수 있음.
SQL>SELECT INSTR('CORPORATE FLOOR','OR') "Instring" FROM DUAL
Instring
----------
2
-- 왼쪽에서 3번째부터 시작을 해서 비교를 한다. 2번째 OR의 위치가 반환 됨.
SQL>SELECT INSTR('CORPORATE FLOOR','OR', 3) "Instring" FROM DUAL
Instring
----------
5
-- 왼쪽에서 3번째부터 시작해서 비교를 하는데
OR이 두 번째 검색되는 지점의 위치를 반환 한다.
SQL> SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) "Instring" FROM DUAL;
Instring
----------
14
11. TRIM
- 특정한 문자를 제거 한다.
- 제거할 문자를 입력하지 않으면 기본적으로 공백이 제거 됨.
- 리턴값의 데이터타입은 VARCHAR2.
-- 0을 제거
SQL>SELECT TRIM(0 FROM 0009872348900) "TRIM Example" FROM DUAL;
TRIM Example
------------
98723489
-- 어떤 문자도 입력하지 않으면 기본적으로 공백이 제거 됨.
SQL>SELECT NVL(TRIM (' '),'공백') "TRIM Example" FROM DUAL
TRIM Example
------------
공백
-- TRIM을 사용한 위에 예제와 사용하지 않은 아래 예제의 결과 값이 다름을 알 수 있다.SQL>SELECT NVL(' ','공백') "TRIM Example" FROM DUAL
TRIM Example
------------
12. LTRIM
SQL>SELECT LTRIM('xyxXxyLAST WORD','xy') "LTRIM example" FROM DUAL;
LTRIM example
------------
XxyLAST WORD
13. RTRIM
SQL>SELECT RTRIM('BROWNINGyxXxy','xy') "RTRIM example" FROM DUAL;
RTRIM examp
-----------
BROWNINGyxX