Đây là chút khéo léo. Giả sử bảng chỉ có một cột, thì Đếm (1) và Đếm (*) sẽ cho các giá trị khác nhau.
set nocount on
declare @table1 table (empid int)
insert @table1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(NULL),(11),(12),(NULL),(13),(14);
select * from @table1
select COUNT(1) as "COUNT(1)" from @table1
select COUNT(empid) "Count(empid)" from @table1
Query Results
Như bạn có thể nhìn thấy trong hình, Kết quả đầu tiên cho thấy bảng có 16 hàng. trong đó có hai hàng là NULL. Vì vậy, khi chúng tôi sử dụng Đếm (*) công cụ truy vấn tính số hàng, Vì vậy, chúng tôi đã đếm kết quả là 16. Nhưng trong trường hợp của Đếm (empid) nó được tính không NULL giá trị trong cột empid. Vì vậy, chúng tôi nhận được kết quả là 14.
vì vậy bất cứ khi nào chúng tôi đang sử dụng COUNT (Cột) đảm bảo chúng tôi xử lý các giá trị NULL như được hiển thị bên dưới.
select COUNT(isnull(empid,1)) from @table1
sẽ tính cả giá trị NULL và Non-NULL.
Lưu ý: Điều tương tự cũng được áp dụng ngay cả khi bảng được tạo thành từ nhiều cột. Đếm (1) sẽ cho tổng số hàng không phân biệt giá trị NULL/Non-NULL. Chỉ khi các giá trị cột được tính bằng Đếm (Cột), chúng ta cần phải quan tâm đến các giá trị NULL.
Nguồn
2016-11-16 10:02:37
Hi, nơi nào bạn cần loại mã cơ sở dữ liệu đếm này trong cơ sở dữ liệu ngôn ngữ nào alking Trân trọng, Iordan – IordanTanev
Tôi ngạc nhiên không có câu trả lời duy nhất chứa một liên minh đơn giản của số lượng lựa chọn (*) ... –
@Lieven: Tại sao trên trái đất bạn sẽ sử dụng một 'công đoàn' ở đây? Câu trả lời của Montecristo là giải pháp tốt nhất. – Eric