SQL에서 COUNT() 결과에 NULL이 포함될까?

쿼리를 하다 보니 COUNT() 함수를 사용하여 개수를 가져와야 하는 경우가 있습니다. 그런데 값이 없는 NULL 도 COUNT() 함수 실행 결과에 포함 되어 있는지 궁금해 졌습니다. LEFT JOIN을 하게 되면 NULL인 값들이 생기는데 그것은 제외하고 몇 개가 있는지 알아야 하는 상황이 발생했거든요. 그래서 여기저기 찾아 봤더니 아래와 같이 포함 되거나 포함되지 않거나 하더군요.

포함되는 경우 : COUNT(*)
포함되지 않는 경우: COUNT(ColumnName)

COUNT(컬럼명)을 사용하면 NULL 값은 제외하고 COUNT 합니다. COUNT(*)를 사용하면 NULL도 포함하여 전부 COUNT 합니다.

하지만, 빈 문자열은 COUNT() 결과에 포함됩니다. 빈 문자열을 COUNT() 결과에서 빼려면 빈 문자열을 NULL로 바꾸고 COUNT()를 하면 됩니다.

mysql : COUNT( IF (ColumnName=”, NULL, ColumnName) )
mssql : COUNT( CASE WHEN ColumnName=” THEN NULL ELSE ColumnName END )

TRIM() 함수를 사용하면 스페이스, 탭, 줄바꿈 등의 의미 없는 문자만 있는 것도 COUNT 되지 않게 됩니다.

COUNT( DISTINCT( ColumnName ) )으로 하면 중복되지 않고 NULL은 제외되는 값들만 COUNT 하게 됩니다.

Advertisements

Published by: benant

WEB PROGRAMMER. PHP, ASP, XML, Javascript, VBScript, PL/SQL, MySQL, Oracle. scrollads.co.kr 새로운 모바일 광고 서비스. trenue.com 시스탬 트래이딩 서비스. blogman.co.kr 블로그 운영 관리 서비스. creget.co.kr 해외 상품 구매대행. 핫딜 정보 제공 서비스. fgshop.co.kr - 독립형 쇼핑몰 솔루션.

카테고리 Web태그, 댓글 남기기

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중