오라클 함수, SQL Functions(10g) - Character Functions
개발 및 관리/Oracle 9i, 10g, 11g, 12c, 19c 2012. 11. 15. 22:49http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions001.htm#sthref912
SQL Functions(10g) - Character Functions
1. CHR(N) - 바이너리 값 N을 VARCHAR2 값으로 변환한 값을 반환한다.
SQL> SELECT CHR(72)||CHR(69)||CHR(76)||CHR(76)||CHR(79) AS "HELLO" FROM DUAL;
A(65), B(66), C(67), D(68), E(69), F(70), G(71), H(72), I(73)
J(74), K(75), L(76), M(77), N(78), O(79), P(80), Q(81), R(82)
S(83), T(84), U(85), V(86), W(87), X(88), Y(89), Z(90)
2. CONCAT(S1, S2) - 문자열 S1과 문자열 S2를 연결하여 합친다.
SQL> SELECT CONCAT('Hello',' World') AS "Hello World" FROM DUAL;
SQL> SELECT CONCAT(CONCAT(LAST_NAME, '''s salary is '), SALARY ) AS "Salary" FROM EMPLOYEES;
3. INITCAP(S) - 문자열 S에서 각 단어에서 시작하는 첫 문자를 대문자로 시작한다.
SQL> SELECT INITCAP('hello world') AS "Hello World", INITCAP('HELLO WORLD') AS "HELLO WORLD", INITCAP('hElLO wOrLd') AS "hElLO wOrLd" FROM DUAL;
4. LOWER(S) - 문자열 S의 알파벳을 모두 소문자로 변환하여 반환한다.
SQL> SELECT LOWER('HELLO WORLD') AS "HELLO WORLD" FROM DUAL;
SQL> SELECT LAST_NAME AS "LAST_NAME", LOWER(LAST_NAME) AS "LOWERCASE" FROM EMPLOYEES WHERE ROWNUM < 3;
5. UPPER - 문자열 S의 알파벳을 모두 대문자로 변환하여 반환한다.
SQL> SELECT UPPER('hello world') AS "hello world" FROM DUAL;
SQL> SELECT LAST_NAME AS "LAST_NAME", UPPER(LAST_NAME) AS "UPPER" FROM EMPLOYEES WHERE ROWNUM < 3;
6. LPAD(S, N, P) - 문자열 S의 길이가 N보다 작으면 왼쪽에 P문자를 N-LENGTH(S) 만큼 추가한다.
SQL> SELECT LPAD('Star',7,'*') AS "Star 7", LPAD('Star',4,'*') AS "Star 4", LPAD('Star',3,'*') AS "Star 3" FROM DUAL;
7. RPAD(S, N, P) - 문자열 S의 길이가 N보다 작으면 오른쪽에 P문자를 N-LENGTH(S) 만큼 추가한다.
SQL> SELECT RPAD('Star',7,'*') AS "Star 7", RPAD('Star',4,'*') AS "Star 4", RPAD('Star',3,'*') AS "Star 3" FROM DUAL;
SQL> SELECT LAST_NAME, RPAD(' ', SALARY/1000/1, '*') "SALARY" FROM EMPLOYEES
ORDER BY LAST_NAME;
8. RELPACE(S, S1, S2) - 문자열 S에서 문자 혹은 문자열 S1을 찾아 S2로 바꾼 결과를 반환한다.
SQL> SELECT REPLACE('There is no blank!.', ' ', '*') "Changes" FROM DUAL;
SQL> SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM DUAL;
9. TRIM - LEADING(왼쪽 제거), TRAILING(오른쪽 제거), BOTH(왼쪽, 오른쪽 제거) 사용 가능
제거 해야 할 문자가 없으면, blank space 제거, 그리고 BOTH(양쪽)에서 blank space 제거
SQL> SELECT TRIM(LEADING '*' FROM '***Hello***World***') AS "LEADING" FROM DUAL;
SQL> SELECT TRIM(TRAILING '*' FROM '***Hello***World***') AS "TRAILING" FROM DUAL;
SQL> SELECT TRIM(BOTH '*' FROM '***Hello***World***') AS "BOTH" FROM DUAL;
SQL> SELECT TRIM(' Hello World ') AS "BOTH" FROM DUAL;
10. LTRIM(S, S1) - 문자열 S에서 문자 혹은 문자열 S1을 왼쪽에서 모두 지운 값을 반환한다.
제거 해야 할 문자가 없으면, 왼쪽만 blank space 제거
SQL> SELECT '***Hello***World***' AS "Hello World", LTRIM('***Hello***World***', '*') AS "LTRIM" FROM DUAL;
SQL> SELECT ' Hello World ' AS "Hello World", LTRIM(' Hello World ') AS "LTRIM" FROM DUAL;
11. RTRIM(S, S1) - 문자열 S에서 문자 혹은 문자열 S1을 오른쪽에서 모두 지운 값을 반환한다.
제거 해야 할 문자가 없으면, 오른쪽만 blank space 제거
SQL> SELECT '***Hello***World***' AS "Hello World", RTRIM('***Hello***World***', '*') AS "RTRIM" FROM DUAL;
SQL> SELECT ' Hello World ' AS "Hello World", RTRIM(' Hello World ') AS "RTRIM" FROM DUAL;
SQL> SELECT RTRIM('BROWNING: ./=./=./=./=./=.=','/=.') "RTRIM example" FROM DUAL;
12. SUBSTR(S, M, N) - 문자열 S를 M번째 CHAR부터 N의 길이로 잘라낸다.
SQL> SELECT SUBSTR('Hello World', 1, 5) AS "Hello", SUBSTR('Hello World', 7, 5) AS "World", SUBSTR('Hello World', -5, 5) AS "Hello" FROM DUAL;
SQL>SELECT SUBSTR('Hello World', 0, 1) FROM DUAL;
SQL>SELECT SUBSTR('Hello World', 0, 2) FROM DUAL;
SQL>SELECT SUBSTR('Hello World', 1, 2) FROM DUAL;
SQL>SELECT SUBSTR('Hello World', 0) FROM DUAL;
SQL>SELECT SUBSTR('Hello World', 1) FROM DUAL;
SQL>SELECT SUBSTR('Hello World', 5) FROM DUAL;
13. INSTR(S,S1, M, N) - 문자열 S에서 문자 혹은 문자열 S1의 시작 위치를 반환한다.
단, 시작 위치는 M이고 N번째 S1의 시작 위치를 반환한다.
SQL> SELECT INSTR('HELLO WORLD','O', 1, 1) "Instring1", INSTR('HELLO WORLD','O', 1, 2) "Instring2", INSTR('HELLO WORLD','O', 1, 3) "Instring3" FROM DUAL;
SQL>SELECT INSTR('HELLO WORLD','O', -1, 1) "Instring" FROM DUAL;
SQL>SELECT INSTR('HELLO WORLD','O', -7, 1) "Instring" FROM DUAL;
14. TRANSLATE(S, S1, R) - 문자열 S에서 문자 S1을 찾아 R로 바꾼 값을 반환한다.
SQL> SELECT TRANSLATE('0123456789', '0123456789', 'helloworld') FROM DUAL;
SQL> SELECT REPLACE('0123456789', '1', 'x') FROM DUAL;
SQL> SELECT TRANSLATE('A0B1CDEF2G3H9', '+.0123456789', ' ') FROM DUAL;
SQL> SELECT TRANSLATE('A0B1CDEF2G3H9', '1234567890', ' ') FROM DUAL;
SQL> SELECT NVL(LENGTH(TRANSLATE('A0B1CDEF2G3H9', '+.0123456789', ' ')), 0) FROM DUAL;
SQL> SELECT NVL(LENGTH(TRANSLATE('123456789', '+.0123456789', ' ')), 0) FROM DUAL;
SQL> SELECT TRANSLATE('123전화번호', '0123456789'||'전화번호', 'ABCDEFGHIJKLMN') FROM DUAL;
15. LENGTH(S) - 문자열 S의 길이를 반환한다.
SQL> SELECT LENGTH('HelloWorld') FROM DUAL;
SQL>SELECT LENGTH(HelloWorld) FROM DUAL;
SQL>SELECT LENGTH('01234') FROM DUAL;
SQL>SELECT LENGTH(01234) FROM DUAL;
16. REGEXP_REPLACE
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm#i1305521
SQL> SELECT
REGEXP_REPLACE(PHONE_NUMBER,
'([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})',
'(\1) \2-\3') "REGEXP_REPLACE"
FROM EMPLOYEES;
SQL> SELECT PHONE_NUMBER FROM EMPLOYEES;
SQL> SELECT
REGEXP_REPLACE(COUNTRY_NAME, '(.)', '\1 ') "REGEXP_REPLACE"
FROM COUNTIRES;
17. REGEXP_SUBSTR
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions131.htm#i1239858
18. SOUNDEX(S) - 문자열 S와 소리가 비슷한 것들 나타낸다.
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions148.htm#i78853
SQL> SELECT LAST_NAME, FIRST_NAME
FROM HR.EMPLOYEES
WHERE SOUNDEX(LAST_NAME) = SOUNDEX('SMYTHE');
'개발 및 관리 > Oracle 9i, 10g, 11g, 12c, 19c' 카테고리의 다른 글
오라클 함수, SQL Functions(10g) - Collection Functions, Hierarchical Functions (0) | 2012.11.17 |
---|---|
오라클 함수, SQL Functions(10g) - Datetime Functions (0) | 2012.11.17 |
오라클 함수, SQL Functions(10g) - Numeric Functions (0) | 2012.11.15 |
Oracle Database 10g SQL Fundamentals II - Practice 6 (0) | 2012.11.14 |
Oracle Database 10g SQL Fundamentals II - Practice 5 (0) | 2012.11.14 |