2010. 4. 13. 10:21

COUNT(*) 과 COUNT(column_name) 차이

아래 테스트를 통해
COUNT(*)은 NULL값을 포함하고, COUNT(column_name)는 NULL값을 포함하지 않는걸 확인할 수 있다.
COUNT(상수)를 사용해도 NULL값을 포함한다.

--VERSION MSSQL 2005

DECLARE @T TABLE (A VARCHAR(1))

INSERT INTO @T VALUES('A')

INSERT INTO @T VALUES('B')

INSERT INTO @T VALUES(NULL)

INSERT INTO @T VALUES('C')

 

 -- 입력목록보여주기

SELECT * FROM @T

[결과]

A

-----

A

B

NULL

C


 

 

SELECT COUNT(*) CNT FROM @T -- null 포함

[결과]

 

CNT

-----------

4


 
 

SELECT COUNT(A) CNT FROM @T

[결과]

 

CNT

-----------

3

경고: 집계또는다른SET 연산에의해Null 값이제거되었습니다.


 

 

SELECT COUNT(1) CNT FROM @T -- null 포함

 

CNT

-----------

4


 

-- 결과값이2^31-1 보다큰경우COUNT_BIG 사용

SELECT COUNT_BIG(*) BIG_CNT FROM @T -- null 포함

SELECT COUNT_BIG(A) BIG_CNT FROM @T

SELECT COUNT_BIG(1) BIG_CNT FROM @T -- null 포함