์ค์ํ ๋ด์ฉ์ด ์๋
๋ด๊ฐ ํท๊ฐ๋ฆฌ๋ ๊ฒ๋ง ์ ๋ฆฌํ ๊ฒ
1. SUBSTR
๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ฌ๋ฆฌ Oracle๊ณผ SQL์์ SUBSTR ํจ์์ ์ธ๋ฑ์ค๋ 1๋ถํฐ ์์. ์ฆ, ๋ฌธ์์ด์์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ ์ธ๋ฑ์ค 1์.
SUBSTR(string, start_position, [length])
start_position: ์ถ์ถ์ ์์ํ ์์น (1๋ถํฐ ์์)
length: (์ ํ์ ) ์ถ์ถํ ๊ธธ์ด
SELECT SUBSTR('Hello World', 1, 5) AS Substring FROM dual;
์ ์ฟผ๋ฆฌ์์ SUBSTR('Hello World', 1, 5)๋ ๋ฌธ์์ด 'Hello World'์์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ถํฐ ์์ํ์ฌ 5๊ฐ์ ๋ฌธ์๋ฅผ 'Hello' ์ถ์ถ
SELECT SUBSTR('๋ธ๋ํํฌ์ ๋', 3, 2) FROM DUAL;
//ํํฌ
SELECT SUBSTR('๋ธ๋ํํฌ์ ๋', 3, 4) FROM DUAL;
//ํํฌ์ ๋
2. RTRIM / LTRIM
ํ๋๋ผ๋ ํฌํจ๋๋ฉด ํธ๋ฆผ ์ํํด์ผ ํจ.
[SAMPLE]
COL1 | COL2 |
ORACLE | DATABASE |
SQL | DEVELOPER |
[SQL]
SELECT LENGTH(TRIM(col1, 'LE')) + LENGTH(LTRIM(col2, 'DE')) AS result
FROM sample;
[์ฟผ๋ฆฌ ์ํ ๊ฒฐ๊ณผ]
RTRIM(COL1,'LE) | LTRIM(COL2,'DE') |
ORAC | ATABASE |
SQ | VELOPER |
[RESULT]
RESULT |
11 |
9 |
3. REPLACE
ํด๋น ๊ธ์๋ฅผ ํ ๋ฒ๋ง ์นํํ๋ ๊ฒ ์๋๋ผ ํด๋น ๋ฌธ์๋ฅผ ๋ชจ๋ ์นํ ํด์ผ ํจ.
[SAMPLE]
COL1 |
ORACLE |
SQL |
[SQL]
SELECT REPLACE((REPLACE(COL1, 'L', 'A')), 'A') AS RESULT;
์ผ๋จ COL1์์ ๋ชจ๋ 'L'์ 'A'๋ก ์นํ ํ
๋ชจ๋ A ์ ๊ฑฐ
** ์ฒซ๋ฒ์งธ๋ก ๋์ค๋ L๋ง ์นํํ๋ ๊ฑฐ ์๋. ๋ชจ๋ ํด์ผ ๋๋๊ฒ ์ค์
[RESULT]
RESULT |
ORCE |
SQ |
4. PAD
๋ฌธ์์ด์ด ์ค์ ํ ๊ธธ์ด๊ฐ ๋ ๋๊น์ง ์ผ์ชฝ์ ํน์ ๋ฌธ์๋ก ์ฑ์ฐ๋ ํจ์
SELECT LPAD('JENNIE', 10, 'V') FROM DUAL;
// VVVVJENNIE
5. SIGN(์)
์์ ๋ถํธ๋ฅผ ๋ฐํํ๋ ํจ์. ์์์ด๋ฉด 1, ์์์ด๋ฉด -1, 0์ด๋ฉด 0๋ฐํ
SELECT SIGN(-7) FROM DUAL;
// -1
SELECT SIGN(7) FROM DUAL;
// 1
6. ROUND, TRUNC, CEIL, FLOOR
ROUND
์ง์ ๋ ์๋ฆฟ์ ๊น์ง๋ฐ์ฌ๋ฆผ
ROUND(163.76, -2)
// 200
-1 ์ญ์ ์๋ฆฌ๊น์ง ๋ฐ์ฌ๋ฆผ
-2 ๋ฐฑ์ ์๋ฆฌ๊น์ง ๋ฐ์ฌ๋ฆผ
TRUNC
์ง์ ๋ ์๋ฆฟ์๊น์ง ๋ฒ๋ฆผ
SELECT TRUNC(54.29, 1) FROM DUAL;
// 54.2
SELECT TRUNC(54.29, -1) FROM DUAL;
// 50
CEIL
์์์ ์ดํ์ ์๋ฅผ ์ฌ๋ฆผํ ์ ์ ๋ฐํ
์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์ต์ ์ ์ ๋ฐํ
์์ ์ฌ๋ฆผ -> ์์์ ๋ผ๊ณ ์ ์๋ถ๋ ๊ทธ๋๋ก
SELECT CEIL(72,86) FROM DAUL;
// 73
SELECT CEIL(-33.4) FROM DUAL;
// -33
FLOOR
์์์ ์ดํ์ ์๋ฅผ ๋ฒ๋ฆผํ ์ ์ ๋ฐํ
์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ต๋ ์ ์ ๋ฐํ
์์ ๋ฒ๋ฆผ -> ์์์ ๋ผ๊ณ ์ ์๋ถ+1
SELECT FLOOR(22.3) FROM DUAL;
// 22
SELECT FLOOR(-22.3) FROM DAUL;
// -23
โญ`CEIL` ํจ์๋ ์ฃผ์ด์ง ์ซ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์ต์ ์ ์๋ฅผ ๋ฐํ, ์ฃผ์ด์ง ์ซ์๋ฅผ ์ฌ๋ฆผํ์ฌ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์๋ก ๋ง๋ ๋ค.
โญ`FLOOR` ํจ์๋ ์ฃผ์ด์ง ์ซ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ต๋ ์ ์๋ฅผ ๋ฐํ, ์ฃผ์ด์ง ์ซ์๋ฅผ ๋ด๋ฆผํ์ฌ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์๋ก ๋ง๋ ๋ค.
7. MOD
MOD(์1, ์2)
์1์ ์2๋ก ๋๋ ๋๋จธ์ง ๋ฐํ
โญ๋จ, ์2๊ฐ 0์ผ ๊ฒฝ์ฐ ์1 ๋ฐํ
โญ์ ์๋ฅผ ์์๋ก ๋๋๋ฉด ์ ์ ๋ฐํ
โญ๋ ์ธ์๊ฐ์ด ๋ชจ๋ ์์์ด๋ฉด ๋๋จธ์ง๋ ์์
SELECT MOD(15, -4) FROM DUAL;
// 3
// ์ ์๋ฅผ ์์๋ก ๋๋์ด๋ ๋๋จธ์ง๋ ์ ์
SELECT MOD(-15, 0) FROM DUAL;
// -15
// ์ซ์2๊ฐ 0์ด๋ฉด ์ซ์1 ๋ฐํ
SELECT MOD(-15, -3) FROM DAUL;
// -3
// ๋ ์ธ์๊ฐ์ด ๋ชจ๋ ์์์ด๋ฉด ๋๋จธ์ง๋ ์์ ๋ฐํ
8. ๋ ์งํจ์ ๊ด๋ จ
SYSDATE/GETDATE
// SQL Server(MSSQL)์ GETDATE()
SELECT SYSDATE FROM DUAL;
// ์๊ฐ๊น์ง ํ์
// 2024-11-16 22:08:08
EXTRACT(YEAR/MONTH/DAY FROM SYSDATE)์ฐ๋ฉด ํน์ ๋จ์๋ก YEAR, MONTH, DAY ๋ฐํ
ADD_MONTH
ADD_MONTH(๋ ์ง๋ฐ์ดํฐ, ํน์ ๊ฐ์์) ์ฐ๋ฉด ํน์ ๊ฐ์ ์ ๋ํ ๋ ์ง๋ฅผ ๋ฐํ. ๋ ์ง์ ์ด์ ๋ฌ์ด๋ ๋ค์ ๋ฌ์ ๊ธฐ์ค ๋ ์ง๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ํด๋น ์์ ๋ง์ง๋ง ์ผ์ ๋ฐํ
SELECT
ADD_MONTHS(to_date('2024-12-31', 'YYYY-MM-DD'), -1) AS Subtract_One_Month,
ADD_MONTHS(to_date('2024-12-31', 'YYYY-MM-DD'), 1) AS Add_One_Month
FROM dual;
// -- 2024-11-30
// -- 2025-01-31
'Coding > SQL&DataBase' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] JOIN (Inner, Outer, Self, Natural, Cross JOIN) (6) | 2024.11.17 |
---|---|
[SQLD] NULL ๊ด๋ จ ํจ์, CASE, DECODE, SQL์คํ์์ (5) | 2024.11.16 |
[SQLD] ์ ๊ทํ, ๋ฐ์ ๊ทํ (36) | 2024.11.16 |
[SQLD] ๋ฐ์ดํฐ๋ชจ๋ธ๋ง์ ์ดํด (6) | 2024.11.16 |
[Database] ์ ๊ทํ ์ฝ๊ฒ ์ดํดํ๊ธฐ, ์ 1์ ๊ทํ, ์ 2์ ๊ทํ, ์ 3์ ๊ทํ, BCNF (1) | 2024.03.26 |