1. ๋ฌธ์ ํจ์๋
- ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ๊ฑฐ๋ ๋ฌธ์ ๋ฐ์ดํฐ๋ก๋ถํฐ ํน์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ํจ์
2. ๋์๋ฌธ์๋ฅผ ๋ฐ๊ฟ์ฃผ๋ ํจ์
- UPPER(๋ฌธ์์ด) : ๊ดํธ ์ ๋ฌธ์์ด์ ๋ชจ๋ ๋๋ฌธ์๋ก ๋ณํํ์ฌ ๋ฐํ
- LOWER(๋ฌธ์์ด) : ๊ดํธ ์ ๋ฌธ์์ด์ ๋ชจ๋ ์๋ฌธ์๋ก ๋ณํํ์ฌ ๋ฐํ
- INITCAP(๋ฌธ์์ด) : ๊ดํธ ์ ๋ฌธ์์ด์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์, ๋๋จธ์ง ๋ฌธ์๋ ์๋ฌธ์๋ก ๋ณํํ์ฌ ๋ฐํ
UPPER([๋ฌธ์์ด])
LOWER([๋ฌธ์์ด])
INITCAP([๋ฌธ์์ด])
-- 1.
SELECT ENAME, UPPER(ENAME), LOWER(ENAME), INITCAP(ENAME)
FROM EMP;
-- 2. ENAME ์ด scott ์ธ ์ฌ์ ์กฐํํ๊ธฐ
SELECT * FROM EMP
WHERE UPPER(ENAME) = UPPER('scott');
-- 3. ENAME ์ scott ์ด ํฌํจ๋ ์ฌ์ ์กฐํํ๊ธฐ
SELECT * FROM EMP
WHERE UPPER(ENAME) LIKE UPPER('%scott%');
(2)(3) : ์ฐพ์ผ๋ ค๋ ๋ฌธ์์ด ๋ฐ์ดํฐ๋ 'scott'์ผ๋ก ๋ช ์ํ์ง๋ง ์์ชฝ ๋ชจ๋ UPPER ํจ์๋ฅผ ํตํด ๋๋ฌธ์๋ก ๋ณํํ์ฌ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ ๋์๋ฌธ์ ์๊ด์์ด scott ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ๋จ
3. ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ํจ์
- LENGTH(๋ฌธ์์ด) : ๊ดํธ ์ ๋ฌธ์์ด์ ๊ธธ์ด ๋ฐํ
- LENGTHB(๋ฌธ์์ด) : ๊ดํธ ์ ๋ฌธ์์ด์ ๋ฐ์ดํธ ์ ๋ฐํ
LENGTH([๋ฌธ์์ด])
LENGTHB([๋ฌธ์์ด])
-- 1. ์ ํํ ์นผ๋ผ์ ๋ฌธ์์ด ๊ธธ์ด ๊ตฌํ๊ธฐ
SELECT ENAME, LENGTH(ENAME)
FROM EMP;
-- 2. ENAME ์ ๊ธธ์ด๊ฐ 5 ์ด์์ธ ์นผ๋ผ ์กฐํํ๊ธฐ
SELECT ENAME, LENGTH(ENAME)
FROM EMP
WHERE LENGTH(ENAME) >= 5;
-- 3. LENGTH ์ LENGTHB ๋น๊ต
SELECT LENGTH('ํ๊ธ'), LENGTHB('ํ๊ธ')
FROM DUAL;
(3) LENGTH('ํ๊ธ') ์ 2, LENGTHB('ํ๊ธ') ์ 4๊ฐ ์ถ๋ ฅ๋๋ค. ํ๊ธ์ ํ ๋ฌธ์๋น 2byte๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ
+ DUAL ํ ์ด๋ธ ์ด๋? : ์ค๋ผํด์ ์ต๊ณ ๊ถํ ๊ณ์ ์ธ SYS ์์ ์ ๋๋ฏธ dummy ํ ์ด๋ธ. ๋ฐ์ดํฐ ์ ์ฅ ๊ณต๊ฐ์ด ์๋ ์์ ์ฐ์ฐ์ด๋ ํจ์์ ๊ฒฐ๊ณผ ๊ฐ ํ์ธ ์ฉ๋๋ก ์ฌ์ฉ๋จ
3. ๋ฌธ์์ด ์ผ๋ถ๋ฅผ ์ถ์ถํ๋ ํจ์
- SUBSTR(๋ฌธ์์ด, ์์ ์์น, ์ถ์ถ ๊ธธ์ด) : ์์ ์์น๋ถํฐ ์ถ์ถ ๊ธธ์ด๋งํผ ์ถ์ถํ์ฌ ๋ฐํ
- SUBSTR(๋ฌธ์์ด, ์์ ์์น) : ์์ ์์น๋ถํฐ ๋ฌธ์์ด ๋๊น์ง ์ถ์ถํ์ฌ ๋ฐํ
- ์์ ์์น n์ด ์์์ผ ๊ฒฝ์ฐ ์ค๋ฅธ์ชฝ์์ n๋ฒ์งธ ์์น์์ ์์ํด ์ถ์ถ ๊ธธ์ด / ๋๊น์ง ์ถ์ถ
SUBSTR([๋ฌธ์์ด], [์์ ์์น], [์ถ์ถ ๊ธธ์ด])
SUBSTR([๋ฌธ์์ด], [์์ ์์น])
-- 1. 2. 3.
SELECT JOB, SUBSTR(JOB, 1, 2), SUBSTR(JOB, 3, 2), SUBSTR(JOB, 5)
FROM EMP;
-- 1. 2. 3.
SELECT JOB, SUBSTR(JOB, -LENGTH(JOB)), SUBSTR(JOB, -LENGTH(JOB), 2), SUBSTR(JOB, -3)
FROM EMP;
JOB = SALESMAN
(1) SUBSTR(JOB, 1, 2) : SA
(2) SUBSTR(JOB, 3, 2) : LE
(3) SUBSTR(JOB, 5) : SMAN
(4) SUBSTR(JOB, -LENGTH(JOB)) : SALESMAN
(5) SUBSTR(JOB, -LENGTH(JOB), 2) : SA
(6) SUBSTR(JOB, -3) : MAN
4. ๋ฌธ์์ด ์์์ ํน์ ๋ฌธ์ ์์น๋ฅผ ์ฐพ๋ ํจ์
- INSTR(๋ฌธ์์ด, ํน์ ๋ฌธ์, ์์ ์์น, ๋ช๋ฒ์งธ) : ๋ฌธ์์ด ์์ ํน์ ๋ฌธ์๋ ๋ฌธ์์ด์ด ์ด๋์ ํฌํจ๋์ด ์๋์ง ์๊ณ ์ ํ ๋ ์ฌ์ฉ
- ํน์ ๋ฌธ์๊ฐ ๋ฌธ์์ด์ ํฌํจ๋์ด ์์ง์ผ๋ฉด ์์น๋ฅผ ๋ฐํ, ํฌํจ๋์ด ์์ง ์๋ค๋ฉด 0์ ๋ฐํ
INSTR([๋์ ๋ฌธ์์ด],
[์์น๋ฅผ ์ฐพ์ผ๋ ค๋ ๋ถ๋ถ ๋ฌธ์/๋ฌธ์์ด],
[์์น ์ฐพ๊ธฐ๋ฅผ ์์ํ ๋์ ๋ฌธ์์ด ์์น(์ ํ, Default 1)],
[์ฐพ์ผ๋ ค๋ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ์ธ์ง ์ง์ (์ ํ, Default 1)])
-- 1. 2. 3.
SELECT INSTR('HELLO, ORACLE!', 'L'),
INSTR('HELLO, ORACLE!', 'L', 5),
INSTR('HELLO, ORACLE!', 'L', 2, 2)
FROM DUAL;
-- 4. LIKE์ ๋น์ทํ ์ฉ๋๋ก ์ฌ์ฉํ๊ธฐ
SELECT *
FROM EMP
WHERE INSTR(ENAME, 'S') > 0;
(1) INSTR('HELLO, ORACLE!', 'L') : 3
(2) INSTR('HELLO, ORACLE!', 'L', 5) : 12
(3) INSTR('HELLO, ORACLE!', 'L', 2, 2) : 4
(4) INSTR(ENAME, 'S') > 0 = ENAME LIKE '%S%' : INSTR ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ด 0๋ณด๋ค ํฌ๋ค๋ฉด ์ฌ์ ์ด๋ฆ์ S๊ฐ ์กด์ฌํ๋ค๋ ์๋ฏธ์ด๊ธฐ ๋๋ฌธ์ LIKE ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์์
5. ํน์ ๋ฌธ์๋ฅผ ๋ค๋ฅธ ๋ฌธ์๋ก ๋ฐ๊พธ๋ ํจ์
- REPLACE(๋ฌธ์์ด or ์นผ๋ผ ์ด๋ฆ, ์ฐพ๋ ๋ฌธ์, ๋์ฒดํ ๋ฌธ์) : ๋ฌธ์์ด ๋ฐ์ดํฐ์ ํฌํจ๋ ํน์ ๋ฌธ์๋ฅผ ๋ค๋ฅธ ๋ฌธ์๋ก ๋์ฒดํ์ฌ ๊ฒฐ๊ณผ ๋ฐํ
- ๋์ฒดํ ๋ฌธ์๋ฅผ ์ ๋ ฅํ์ง ์์ผ๋ฉด ์ฐพ๋ ๋ฌธ์๋ฅผ ๋ฌธ์์ด์์ ์ญ์ ํ ๋ฐํ
REPLACE([๋ฌธ์์ด or ์นผ๋ผ ์ด๋ฆ], [์ฐพ๋ ๋ฌธ์], [๋์ฒดํ ๋ฌธ์(์ ํ)])
-- 1. 2.
SELECT REPLACE('010-1234-5678', '-', ' '),
REPLACE('010-1234-5678', '-')
FROM DUAL;
(1) REPLACE('010-1234-5678', '-', ' ') : 010 1234 5678
(2) REPLACE('010-1234-5678', '-') : 01012345678
6. ๋ฐ์ดํฐ์ ๋น ๊ณต๊ฐ์ ํน์ ๋ฌธ์๋ก ์ฑ์ฐ๋ ํจ์
- ๋ฐ์ดํฐ์ ์๋ฆฟ์๋ฅผ ์ง์ ํ ํ ๋ฐ์ดํฐ ๊ธธ์ด๊ฐ ์ง์ ํ ์๋ฆฌ์๋ณด๋ค ์์ ๊ฒฝ์ฐ ๋๋จธ์ง ๊ณต๊ฐ์ ํน์ ๋ฌธ์๋ก ์ฑ์
- LPAD(๋ฌธ์์ด or ์นผ๋ผ ์ด๋ฆ, ์๋ฆฟ์, ์ฑ์ธ ๋ฌธ์) : Left Padding. ์ผ์ชฝ์ ์ฑ์ธ ๋ฌธ์๋ก ์ฑ์ ๋ฐํ
- RPAD(๋ฌธ์์ด or ์นผ๋ผ ์ด๋ฆ, ์๋ฆฟ์, ์ฑ์ธ ๋ฌธ์) : Right Padding. ์ค๋ฅธ์ชฝ์ ์ฑ์ธ ๋ฌธ์๋ก ์ฑ์ ๋ฐํ
LPAD([๋ฌธ์์ด or ์นผ๋ผ ์ด๋ฆ], [์๋ฆฟ์], [์ฑ์ธ ๋ฌธ์(์ ํ)])
RPAD([๋ฌธ์์ด or ์นผ๋ผ ์ด๋ฆ], [์๋ฆฟ์], [์ฑ์ธ ๋ฌธ์(์ ํ)])
-- 1. 2. 3. 4.
SELECT LPAD('ORACLE', 10, '#'),
RPAD('ORACLE', 10, '*'),
LPAD('ORACLE', 10),
RPAD('ORACLE', 10)
FROM DUAL;
(1) LPAD('ORACLE', 10, '#') : ์ผ์ชฝ ๋จ์ ์๋ฆฌ๋ฅผ #๋ก ์ฑ์
(2) RPAD('ORACLE', 10, '*') : ์ค๋ฅธ์ชฝ ๋จ์ ์๋ฆฌ๋ฅผ *๋ก ์ฑ์
(3) LPAD('ORACLE', 10) : ์ผ์ชฝ ๋จ์ ์๋ฆฌ๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ์ฑ์
(4) RPAD('ORACLE', 10) : ์ค๋ฅธ์ชฝ ๋จ์ ์๋ฆฌ๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ์ฑ์
7. ๋ ๋ฌธ์์ด์ ํฉ์น๋ ํจ์
- CONCAT(๋ฌธ์์ด or ์นผ๋ผ ์ด๋ฆ, ๋ฌธ์์ด or ์นผ๋ผ ์ด๋ฆ) : ๋๊ฐ์ ๋ฌธ์์ด์ ํ๋์ ๋ฐ์ดํฐ๋ก ์ฐ๊ฒฐ ํ ๊ฒฐ๊ณผ ๋ฐํ
- || ์ฐ์ฐ์ : CONCAT ํจ์์ ์ ์ฌํ๊ฒ ๋ฌธ์์ด์ด๋ ์นผ๋ผ์ ์ฐ๊ฒฐ
CONCAT([๋ฌธ์์ด or ์นผ๋ผ ์ด๋ฆ], [๋ฌธ์์ด or ์นผ๋ผ ์ด๋ฆ])
-- 1. 2. CONACT ํจ์
SELECT CONCAT(EMPNO, ENAME),
CONCAT(EMPNO, CONCAT(' : ', ENAME))
FROM EMP
WHERE EMPNO = 7788, ENAME = 'SCOTT';
-- 3. 4. || ์ฐ์ฐ์
SELECT EMPNO || ENAME,
EMPNO || ' : ' || ENAME
FROM EMP
WHERE EMPNO = 7788, ENAME = 'SCOTT';
(1) CONCAT(EMPNO, ENAME) : 7788SCOTT
(2) CONCAT(EMPNO, CONCAT(' : ', ENAME)) : 7788 : SCOTT
(3) EMPNO || ENAME : 7788SCOTT
(4) EMPNO || ' : ' || ENAME : 7788 : SCOTT
8. ํน์ ๋ฌธ์๋ฅผ ์ง์ฐ๋ ํจ์
- ์ญ์ ํ ๋ฌธ์๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ถ์ ์ผ๋ก ๊ณต๋ฐฑ์ด ์ญ์ ๋จ
- TRIM(์ญ์ ์ต์ (์ ํ), ์ญ์ ํ ๋ฌธ์(์ ํ, default ๊ณต๋ฐฑ) FROM ๋ฌธ์์ด)
- ์ต์ : ์ผ์ชฝ์ ๊ธ์๋ฅผ ์ง์ฐ๋ LEADING, ์ค๋ฅธ์ชฝ์ ๊ธ์๋ฅผ ์ง์ฐ๋ TRAILING, ์์ชฝ์ ๊ธ์๋ฅผ ๋ชจ๋ ์ง์ฐ๋ BOTH
- LTRIM(๋ฌธ์์ด, ์ญ์ ํ ๋ฌธ์ ์งํฉ(์ ํ, defalut ๊ณต๋ฐฑ) / RTRIM(๋ฌธ์์ด, ์ญ์ ํ ๋ฌธ์ ์งํฉ(์ ํ, defalut ๊ณต๋ฐฑ)
- TRIM์ ๋ฌธ์ ํ๋๋ง ์ง์ , LTRIM, RTRIM์ ์ฌ๋ฌ ๋ฌธ์ ์ง์ ์ด ๊ฐ๋ฅ
- ๋งจ ์ผ์ชฝ, ์ค๋ฅธ์ชฝ๋ถํฐ ์ง์ฐ๊ธฐ ๋๋ฌธ์ LTRIM('<_O<_racle_>', '_<') ์ ๊ฒฝ์ฐ O<_racle ์ด ๋จ๊ฒ ๋จ
TRIM([์ญ์ ์ต์
(์ ํ)], [์ญ์ ํ ๋ฌธ์(์ ํ, default ๊ณต๋ฐฑ) FROM ๋ฌธ์์ด])
LTRIM([๋ฌธ์์ด], [์ญ์ ํ ๋ฌธ์ ์งํฉ(์ ํ, defalut ๊ณต๋ฐฑ)])
RTRIM([๋ฌธ์์ด], [์ญ์ ํ ๋ฌธ์ ์งํฉ(์ ํ, defalut ๊ณต๋ฐฑ)])
-- 1. 2. 3. 4. ์ญ์ ํ ๋ฌธ์๊ฐ ์์ ๋ TRIM
SELECT '[' || TRIM(' _ _Oracle_ _ ') || ']',
'[' || TRIM(LEADING FROM ' _ _Oracle_ _ ') || ']',
'[' || TRIM(TRAILING FROM ' _ _Oracle_ _ ') || ']',
'[' || TRIM(BOTH FROM ' _ _Oracle_ _ )' || ']'
FROM DUAL;
-- 5. 6. 7. 8. ์ญ์ ํ ๋ฌธ์๊ฐ ์์ ๋ TRIM
SELECT '[' || TRIM('_' FROM '_ _Oracle_ _') || ']',
'[' || TRIM(LEADING '_' FROM '_ _Oracle_ _') || ']',
'[' || TRIM(TRAILING '_' FROM '_ _Oracle_ _') || ']',
'[' || TRIM(BOTH '_' FROM '_ _Oracle_ _') || ']'
FROM DUAL;
-- 9. 10. 11. 12. 13.
SELECT '[' || TRIM(' _Oracle_ ') || ']',
'[' || LTRIM(' _Oracle_ ') || ']',
'[' || LTRIM('<_Oracle_>', '<_') || ']',
'[' || RTRIM(' _Oracle_ ') || ']',
'[' || RTRIM('<_Oracle_>', '>_') || ']'
FROM DUAL;
(1) '[' || TRIM(' _ _Oracle_ _ ') || ']' : [ _ _Oracle_ _ ] -> [_ _Oracle_ _] ์์ชฝ ๊ณต๋ฐฑ์ด ์ญ์ ๋จ
(2) '[' || TRIM(LEADING FROM ' _ _Oracle_ _ ') || ']' : [ _ _Oracle_ _ ] -> [_ _Oracle_ _ ] ์ผ์ชฝ ๊ณต๋ฐฑ๋ง ์ญ์ ๋จ
(3) '[' || TRIM(TRAILING FROM ' _ _Oracle_ _ ') || ']' : [ _ _Oracle_ _ ] -> [ _ _Oracle_ _] ์ค๋ฅธ์ชฝ ๊ณต๋ฐฑ๋ง ์ญ์ ๋จ
(4) '[' || TRIM(BOTH FROM ' _ _Oracle _ _ ') || ']' : [ _ _Oracle_ _ ] -> [_ _Oracle_ _] ์์ชฝ ๊ณต๋ฐฑ์ด ์ญ์ ๋จ
(5) '[' || TRIM('_' FROM '_ _Oracle_ _') || ']' : [_ _Oracle_ _] -> [ _Oracle_ ] ์์ชฝ _๊ฐ ์ญ์ ๋จ
(6) '[' || TRIM(LEADING '_' FROM '_ _Oracle_ _') || ']' : [_ _Oracle_ _] -> [ _Oracle_ _] ์ผ์ชฝ _๋ง ์ญ์ ๋จ
(7) '[' || TRIM(TRAILING '_' FROM '_ _Oracle_ _') || ']' : [_ _Oracle_ _] -> [_ _Oracle_ ] ์ค๋ฅธ์ชฝ _๋ง ์ญ์ ๋จ
(8) '[' || TRIM(BOTH '_' FROM '_ _Oracle_ _') || '] : [_ _Oracle_ _] -> [ _Oracle_ ] ์์ชฝ _๊ฐ ์ญ์ ๋จ
(9) '[' || TRIM(' _Oracle_ ') || ']' : [ _Oracle_ ] -> [_Oracle_] ์์ชฝ ๊ณต๋ฐฑ์ด ์ญ์ ๋จ
(10) '[' || LTRIM(' _Oracle_ ') || ']' : [ _Oracle_ ] -> [_Oracle_ ] ์ผ์ชฝ ๊ณต๋ฐฑ๋ง ์ญ์ ๋จ
(11) '[' || LTRIM('<_Oracle_>', '<_') || ']' : [<_Oracle_>] -> [Oracle_>] ์ผ์ชฝ <_๊ฐ ์ญ์ ๋จ
(12) '[' || RTRIM(' _Oracle_ ') || ']' : [ _Oracle_ ] -> [ _Oracle_] ์ค๋ฅธ์ชฝ ๊ณต๋ฐฑ๋ง ์ญ์ ๋จ
(13) '[' || RTRIM('<_Oracle_>', '>_') || '] : [<_Oracle_>] -> [<_Oracle] ์ค๋ฅธ์ชฝ _>๊ฐ ์ญ์ ๋จ