ํฐ์คํ ๋ฆฌ ๋ทฐ
๐งฎ ORACLE์์ ์์๋ฅผ 0์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ
๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ค ๋ณด๋ฉด ์์๋ฅผ 0์ผ๋ก ๋ฐ๊พธ๊ณ ์ถ์ ๋๊ฐ ์์ฃผ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋งค์ถ์ด ๋ง์ด๋์ค๋ก ๊ธฐ๋ก๋๊ฑฐ๋, ์์ต ๊ณ์ฐ์์ ์์ค ๊ฐ์ 0์ผ๋ก ํ์ํด์ผ ํ๋ ๊ฒฝ์ฐ์
๋๋ค.
์ด๋ด ๋ Oracle SQL์์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์์๋ฅผ 0์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค.
๋ํ์ ์ผ๋ก GREATEST() ํจ์์ SIGN() ํจ์๋ฅผ ํ์ฉํฉ๋๋ค.
๐ง 1๏ธโฃ GREATEST ํจ์ ์ฌ์ฉ
๐ ๊ธฐ๋ณธ ๊ฐ๋
GREATEST(expr1, expr2, ...) ํจ์๋ ์ฌ๋ฌ ๊ฐ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฐํํฉ๋๋ค.
๐ ์ฆ,
GREATEST(-999, 0)์ ๋ ๊ฐ ์ค ํฐ ๊ฐ์ธ 0์ ๋ฐํํฉ๋๋ค.
๐งฉ ์์
SELECT GREATEST(-999, 0) AS result FROM DUAL;
| ์ ๋ ฅ๊ฐ | ๊ฒฐ๊ณผ |
|---|---|
| -999 | 0 |
| 50 | 50 |
| 0 | 0 |
โ ์ฅ์
- ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์
- ์ฌ๋ฌ ์ด์ ํ ๋ฒ์ ๋น๊ตํ ๋๋ ์ฌ์ฉ ๊ฐ๋ฅ
โ๏ธ ํ์ฅ ์์
SELECT
EMPNO,
SAL,
GREATEST(SAL, 0) AS NON_NEGATIVE_SAL
FROM EMP;
๐ ๊ธ์ฌ(
SAL)๊ฐ ์์์ผ ๊ฒฝ์ฐ 0์ผ๋ก,
์์์ผ ๊ฒฝ์ฐ ๋ณธ๋ ๊ฐ์ด ๊ทธ๋๋ก ์ถ๋ ฅ๋ฉ๋๋ค.
๐ฉ 2๏ธโฃ SIGN + DECODE ์กฐํฉ ์ฌ์ฉ
๐ SIGN ํจ์๋?
SIGN(number) ํจ์๋ ์ซ์์ ๋ถํธ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ฐํํฉ๋๋ค.
| ์ ๋ ฅ๊ฐ | ๋ฐํ๊ฐ | ์๋ฏธ |
|---|---|---|
| ์์ | 1 | Positive |
| 0 | 0 | Zero |
| ์์ | -1 | Negative |
์ฆ,
SELECT SIGN(-999) FROM DUAL; -- ๊ฒฐ๊ณผ: -1
SELECT SIGN(999) FROM DUAL; -- ๊ฒฐ๊ณผ: 1
SELECT SIGN(0) FROM DUAL; -- ๊ฒฐ๊ณผ: 0
๐ DECODE ํจ์๋?
DECODE(expr, search, result, default)๋ ์กฐ๊ฑด ๋ถ๊ธฐ๋ฅผ ์ํํ๋ Oracle ์ ์ฉ ํจ์์
๋๋ค.
์๋ฅผ ๋ค์ด:
DECODE(SIGN(-999), -1, 0, -999)
์ด ์์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
SIGN(-999)โ-1DECODEํจ์๋ ์ฒซ ๋ฒ์งธ ์ธ์(SIGN(-999))๊ฐ-1์ด๋ฉด 0์ ๋ฐํ,
๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ ๊ฐ(-999) ์ ๋ฐํํฉ๋๋ค.
์ฆ, ์์์ผ ๊ฒฝ์ฐ 0์ผ๋ก, ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ ๊ฐ์ ์ ์งํฉ๋๋ค.
๐งฉ ์์
SELECT DECODE(SIGN(-999), -1, 0, -999) AS result FROM DUAL;
| ์ ๋ ฅ๊ฐ | SIGN ๊ฒฐ๊ณผ | ์ต์ข ๊ฒฐ๊ณผ |
|---|---|---|
| -999 | -1 | 0 |
| 50 | 1 | 50 |
| 0 | 0 | 0 |
โ๏ธ 3๏ธโฃ ๋ ๋ฐฉ๋ฒ ๋น๊ต
| ๊ตฌ๋ถ | GREATEST ๋ฐฉ์ | SIGN + DECODE ๋ฐฉ์ |
|---|---|---|
| ๋ฌธ๋ฒ | ๊ฐ๋จํจ | ์ฝ๊ฐ ๋ณต์กํจ |
| ๊ฐ๋ ์ฑ | ๋์ | ์ค๊ฐ |
| ์คํ ์๋ | ๊ฑฐ์ ๋์ผ | ๊ฑฐ์ ๋์ผ |
| ์ด์์ฑ | ANSI SQL๊ณผ ํธํ | Oracle ์ ์ฉ |
| ํน์ง | ์ฌ๋ฌ ๊ฐ ๋น๊ต ๊ฐ๋ฅ | ๋ ผ๋ฆฌ ์ ์ด ๊ฐ๋ฅ |
๐ง 4๏ธโฃ ์ถ๊ฐ ์์ : ๋๋ ๋ณํ
์์ ๊ฐ์ 0์ผ๋ก ๋ฐ๊ฟ์ผ ํ๋ ์ปฌ๋ผ์ด ์ฌ๋ฌ ๊ฐ์ผ ๋๋ GREATEST๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ๊น๋ํฉ๋๋ค.
SELECT
EMPNO,
GREATEST(SAL, 0) AS SAL,
GREATEST(COMM, 0) AS COMM,
GREATEST(BONUS, 0) AS BONUS
FROM EMP;
๋ชจ๋ ๊ธ์ฌ ๊ด๋ จ ํญ๋ชฉ์์ ์์๋ ์๋์ผ๋ก 0์ผ๋ก ๋ณํ๋ฉ๋๋ค.
๐งฉ 5๏ธโฃ CASE WHEN ๊ตฌ๋ฌธ์ผ๋ก๋ ๊ฐ๋ฅ
CASE ๋ฌธ์ Oracle๋ฟ ์๋๋ผ ๋๋ถ๋ถ์ RDBMS์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ด,
์ด์์ฑ์ด ํ์ํ ํ๊ฒฝ์์๋ ์ด ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
SELECT
CASE
WHEN SAL < 0 THEN 0
ELSE SAL
END AS NON_NEGATIVE_SAL
FROM EMP;
| ์ ๋ ฅ๊ฐ | ๊ฒฐ๊ณผ |
|---|---|
| -500 | 0 |
| 1200 | 1200 |
๐ ์์ฝ
| ๋ฐฉ๋ฒ | ์ค๋ช | ํน์ง |
|---|---|---|
GREATEST(value, 0) |
์์ โ 0 ๋ณํ, ๊ฐ๋จํ๊ณ ๋น ๋ฆ | ์ง๊ด์ , ANSI SQL ํธํ |
DECODE(SIGN(value), -1, 0, value) |
Oracle ์ ์ฉ, ๋ ผ๋ฆฌ ๋ถ๊ธฐ ๊ฐ๋ฅ | ์ ์ฐํ์ง๋ง ๋ณต์กํจ |
CASE WHEN value < 0 THEN 0 ELSE value END |
๋ชจ๋ DB ๊ณตํต ๋ฐฉ์ | ์ด์์ฑ ์ต๊ณ |
๐ก TIP:
GREATEST()ํจ์๋ NULL ๊ฐ์ด ํฌํจ๋๋ฉด ๊ฒฐ๊ณผ๋ NULL์ด ๋๋ฏ๋ก,
ํ์ํ๋ค๋ฉดNVL(value, 0)๋ก ๊ฐ์ธ์ NULL์ 0์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
SELECT GREATEST(NVL(value, 0), 0) FROM DUAL;
๐ ๊ฒฐ๋ก
Oracle์์ ์์๋ฅผ 0์ผ๋ก ๋ฐ๊พธ๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์
GREATEST(value, 0)
ํ์ง๋ง DBMS ์ด์์ฑ์ ๊ณ ๋ คํ๋ค๋ฉดCASE WHEN value < 0 THEN 0 ELSE value END๊ฐ ๊ฐ์ฅ ์์ ์ ์ ๋๋ค.
'Programming > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| DELETE์ TRUNCATE ์ฐจ์ด์ (0) | 2025.11.11 |
|---|---|
| ORACLE TEMP TABLESPACE ์ญ์ (0) | 2023.03.20 |
| ORACLE ๋คํ EXP / IMP ์ต์ (0) | 2022.08.25 |
| ์ค๋ผํด ํ ์ด๋ธ ๋ฝ ํ์ธ ๋ฐ ์ธ์ ์ข ๋ฃ (0) | 2022.05.10 |
| ํฐ์บฃ(Tomcat) ์๋ฒ ์ฌ์์ ์์ด catalina.out ์ด๊ธฐํ (0) | 2022.03.21 |
- Total
- Today
- Yesterday
- ์ฌ์ฉ์์ญ์
- Java
- ํธ์ํฐ ํ์๋ผ์ธ ์์ ฏ
- ์์๋ฅผ
- oracle ์ค๋ฐ๊ฟ
- IE๋ชจ๋
- jeus
- ๋ช ๋ น์ด
- lock
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ก๊ทธ์ด๊ธฐํ
- jQuery
- ์นํฌ๋น
- ๋์ฒด์ด
- ํธ์ํฐ ์์ ฏ
- html
- ์ค๋ผํด ์ธ์
- ์๊ฐ๋น๊ต
- ์ค๋ผํด ๋ณต๊ตฌ
- ๋ฝ๊ฑธ๋ฆผ
- javascript
- this
- webtob
- Oracle
- internal error
- ์ค๋ผํด ๋ฝ
- 0์ผ๋ก
- ์๊ฐ์ง์
- ์ค๋ผํด
- IE๋์ธ์ ์์ด์ง๋
| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |