我有一个表user
,其列data
,其中大部分字段为空,因此基本上为NULL。我想计算该列中存在数据的no:行。
一种方式:所以我认为我可以计算no:NULL字段并从总行中减去。
另一种方式:我可以直接计算占用的字段(但我显然不知道)。所以我为第一种方法编写了这个....但它给出的计数是0.它无法识别NULL或其他什么。
$sql = "SELECT COUNT(CASE WHEN data = '' THEN 1 END) AS null_count, FROM users";
$real= mysql_query($sql);
while($row = mysql_fetch_assoc($real)) {
echo "null Count: {$row['null_count']}". '<br />';
}
答案 0 :(得分:2)
SELECT SUM(IF(data IS NULL, 1, 0)) AS null_count FROM users
答案 1 :(得分:0)
您必须使用IS NULL
,因为NULL
不等于空字符串。它甚至不等于NULL
!
SELECT COUNT(CASE WHEN data IS_NULL THEN 1 END) AS null_count
答案 2 :(得分:0)
要找到非空的,请这样做:
SELECT
COUNT(CASE WHEN len(data) > 0 THEN 1 else 0 END) AS not_empty_or_null_count,
FROM
users
如果您不想计算具有所有空格的项目,可以在len()之前调用数据上的trunc()
类似的问题(对于SQL Server)
答案 3 :(得分:0)
任何原因
select count(field) from table where field is not null;
是不够的?