SELECT IS NULL (COLUMN, NULL일때 들어갈 값) AS RESULT
FROM TABLE
WHERE 조건문
ISNULL이란 위의 쿼리와 같이 조건문에 해당하는 컬럼이 NULL이 아닌 경우
COLUMN명을 표시, NULL일 경우 NULL일때 들어갈 값을 넣어주면 된다.
하지만 MSSQL은 ORACLE과 다르게 데이터가 없으면 NULL로 인식을 못하는 것 같다.
SELECT ISNULL(0, 1) AS RESULT
FROM USER_INFO
WHERE ID = #{id}
이렇게 ID 중복 검사 쿼리를 짰는데
원래 있던 ID를 넣으면 0이 잘 나오지만
없는 ID를 넣으면 RESULT 값에 1이 반환되지 않는다.
값이 없으면 NULL로 인식을 못 해서 그런 것 같다.
찾아보니 MAX를 사용하면 된다고 하길래 아래처럼 쿼리를 수정했다.
SELECT ISNULL(MAX(0), 1) AS RESULT
FROM USER_INFO
WHERE ID = #{id}
위와 같이 쿼리를 수정하고 나니
아이디가 있으면 0, 없으면 1을 잘 반환했다.
MSSQL은 값이 없으면 NULL로 인식 하지 않는다.