ISNULL( SUM( column ), 0 ) - 권장
SUM( ISNULL( column, 0 ) ) - 이건 성능 저하. 무의미한 함수 발생
Null값은 연산을 하지 않으니 굳이 NVL 혹은 ISNULL 필요 없음
Oracle에서는 공백('')은 null 취급하지만
MSSQL에서는 공백과 null이 다르다... 이거 주의하자!
2020.01.31 추가
Null 값은 비교할 수 없다.
예)CASE WHEN A.col = '0' THEN ...
예2) CASE WHEN ISNULL(A.col, '0') = '0' THEN -- orcale : NVL(A.col,'0')
예)와 같은 쿼리에서 많약 A.col에 Null 값이 있다면 해당 조건은 무조건 false를 반환.
예2)와 같이 Null을 처리해줘야 CASE 문이 원하는데로 작동한다.
A.col = Null - 잘못된 방식
A.col IS NULL - 올바른 방식
A.col <> Null - 잘못된 방식
A.col IS NOT NULL - 올바른 방식
위에도 가끔 실수한다. 잘 고치자.
MAX( ISNULL( A.col, 0 ))
ISNULL( MAX( A.col ), 0)
큰 차이는 없지만 가끔 값이 다를 수 있다. Null 처리할 땐 조심하자
'IT 공부 > 개발 관련' 카테고리의 다른 글
[DB] MSSQL에서 문자열 처리하기 (0) | 2020.01.06 |
---|---|
[Tomcat] Removing obsolete files from server… Could not clean server of obsolete files: 프롤로그에서는 콘텐츠가 허용되지 않습니다. (0) | 2019.05.27 |
[DB] MSSQL 컬럼으로 테이블 조회 (0) | 2019.05.08 |
[MSSQL] SET SELECT (0) | 2019.04.11 |
[MSSQL] ROW_NUMBER()를 조건 없이 사용 (0) | 2019.03.11 |