[SQL ์ฝํ ] 12์ธ ์ดํ์ธ ์ฌ์ ํ์ ๋ชฉ๋ก ์ถ๋ ฅํ๊ธฐ(IFNULL/NULL๊ฐ ๋์ฒด/์นํ)
Q)
PATIENT ํ ์ด๋ธ์์ 12์ธ ์ดํ์ธ ์ฌ์ํ์์ `ํ์์ด๋ฆ, ํ์๋ฒํธ, ์ฑ๋ณ์ฝ๋, ๋์ด, ์ ํ๋ฒํธ๋ฅผ ์กฐํ` ํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ์ ํ๋ฒํธ๊ฐ ์๋ ๊ฒฝ์ฐ, 'NONE'์ผ๋ก ์ถ๋ ฅ์์ผ ์ฃผ์๊ณ ๊ฒฐ๊ณผ๋ ๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๊ณ , ๋์ด ๊ฐ๋ค๋ฉด ํ์์ด๋ฆ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
A)
-- MYSQL
SELECT PT_NAME,PT_NO,GEND_CD,AGE, IFNULL(TLNO, 'NONE') //์ ํ๋ฒํธ๊ฐ NULL์ด๋ฉด ๋ฌธ์์ด NONE์ผ๋ก.
FROM PATIENT
WHERE AGE < 13
AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC
<MYSQL์์ ์นผ๋ผ์ด NULL์ผ ๋ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋์ฒด/์นํํ๊ธฐ>
IFNULL(ex1, ex2)
-> ex1์ด NULL ์ด๋ฉด ex2๋ฅผ, ๊ทธ๋ ์ง ์์ผ๋ฉด ex1์ ๋ฐํ
-> ์ค๋ผํด์์๋ NVL( )
SELECT IFNULL(ํ๋๋ช
, '์นํ๊ฐ') FROM TABLE๋ช
-- ์์
-- NULL์ ์ซ์ 0์ผ๋ก ์นํ
SELECT IFNULL(NULL, 0);
-- NULL์ ๋ฌธ์์ด --๋ก ์นํ(๋ฌธ์์ด์ ๋ฐ์ดํ๋ก ๊ฐ์ธ๊ธฐ)
SELECT IFNULL(NULL, '--');
.
.
NULL๊ฐ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋์ฒดํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ
1. IF๋ฌธ ์ฌ์ฉํ๊ธฐ
SELECT IFNULL(์นผ๋ผ๋ช
, '๋๋'), IF(์นผ๋ผ๋ช
IF NULL, '๋๋๋', '๋์ด์๋') FROM ํ
์ด๋ธ๋ช
;
2. CASE WHEN ๊ตฌ๋ฌธ ์ฌ์ฉ
SELECT
CASE WHEN IHIDNUM IS NULL THEN '๋๋๋'
WHEN IHIDNUM ='33' THEN '33'
ELSE '๋์ด ์๋'
END AS IHIDNUM
FROM comtngnrlmber ;
.
.
.
์ฐธ๊ณ > MYBATIS์์ NULLL์ฒดํฌํ๊ธฐ
์ ์์ ๋ถํ์คํ๋ ์์ํฌ(eGovFramework)์์๋ myBatis์์ NULL์ ์ฒดํฌํ ์ ์๋ ํจ์๋ฅผ ์ ๊ณตํด์ค๋ค.
์ฟผ๋ฆฌ๋ฌธ์์ NULL๊ฐ ์ฒดํฌํ๊ธฐ ์ํด ์๋ฆฌ๊ฐ์ด ์ฌ์ฉ ๊ฐ๋ฅ!
SELECT * FROM TABLE_NAME WHERE 1=1
<if test="@egovframework.com.cmm.util.EgovMybaitsUtil@isNotEmpty(str)">AND
STR =#{str}
</if>
๋ฐ์ ๊ตฌ๋ฌธ์ด๋ ๊ฐ๋ค!
<if test='str == null or str == ""'>
</if>
.
.
.
https://web-obj.tistory.com/484๋ธ๋ก๊ทธ์ฐธ๊ณ