-
[mssql] WHERE DELETE_FLAG <> 'Y' 결과가 제대로 나오지 않을 때회사/사내개발 2020. 10. 18. 03:37
WHERE DELETE_FLAG <> 'Y' 해당 구문 같은 경우에
삭제된 데이터로 간주되는 경우 해당 데이터를 제외하고 출력하는 경우에 사용한다.
그런데 mssql에서 조건절에 비교문을 넣었는데
데이터에 null값이 있으면 조건에 해당하는 데이터들을 정상적으로 가져오지 않는다.
----------수정 전----------
AND DELETE_FLAG <> 'Y'
위와 같이 조건절을 넣으면 DELETE_FLAG가 'Y'가 아닌 ('N'이나 NULL) 데이터들을
모두 가져올 줄 알았는데 아무 데이터도 가져오지 않는 것이다.
데이터가 COMMIT이 안됐나 갖가지 이유를 찾다가 선임한테 여쭤봤더니
ISNULL로 NULL인 데이터에 대해 정의를 해주고 비교문을 선언해야한다고 하신다.
하.. 심했다. 별걸 다 까먹었나보다. 공부좀 해야겠네 ^^;
----------수정 후----------
AND ISNULL(A.DELETE_FLAG, '') <> 'Y'
이에 아울러 최근에 또 깨달았던 것이
SUM(컬럼명) 과 같은 계산식은 데이터가 모두 null인 경우 0이 나올 줄 알았는데 null이 나온다.
데이터가 null인 경우 0으로 간주하는 것이 아니라 null인 것을 제외하고 계산하기 때문에
데이터가 아예 없는 경우엔 결과값이 null로 나오는 것 같다.
'회사 > 사내개발' 카테고리의 다른 글