DB

[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컬럼에 함수사용은 서치아규먼트 위반사항이다.

Leave a Reply

error: Content is protected !!