[DB2] NULL 컬럼에 대한 LIKE 검색시 주의사항
DB2 DB는 오라클 데이터베이스와는 다르게
컬럼의 값이 NULL 일 때 반드시 알아야할 사항을 정리해본다.
오라클의 경우 검색조건에서 다음과 같이
빈값으로 비교하면 해당 컬럼의 값이 null이거나 빈값을 모두 가져온다. 그러나 DB2 데이터베이스는 그렇지 않다
--오라클
WHERE NAME = ''
--DB2
WHERE NAME = '' OR NAME IS NULL
반드시 빈값 조건과 null 체크 조건을 함께 걸어준다.
다음은 LIKE 검색에 대한 결과이다.
SELECT *
FROM (
SELECT 'HELLO' AS aaa FROM SYSIBM.DUAL
UNION ALL
SELECT NULL AS aaa FROM SYSIBM.DUAL
UNION ALL
SELECT null AS aaa FROM SYSIBM.DUAL
)
WHERE aaa LIKE ''||'%' ---1건 조회
WHERE COALESCE(aaa, '') LIKE ''||'%' ---3건 조회
null값과 빈값을 함께 조회하기 위해서는 COALESCE함수를 사용해주면 된다.
단 해당 컬럼은 PK컬럼이 아니어야 한다.
PK컬럼에 함수사용은 서치아규먼트 위반사항이다.