如何替换SQL表中的NULL值?

时间:2018-09-14 07:07:59

标签: sql sql-server azure

我在数据库中有一个表dbo.People,其中一列是Name。但是,某些字段缺少名称值。因此,我尝试用No Name替换空字段。还有一个ID列,其值为1, 2, 3, 4,,依此类推。

到目前为止我所拥有的:

SELECT ISNULL(Name, 'No Name') FROM dbo.People;

然后我要分组并计算该名称出现的次数

SELECT COUNT(ID), Name
FROM dbo.People
GROUP BY Name;

这有效,但是我的结果仍然显示一个空白值以及该空白值出现的次数,而不是No Name

3 个答案:

答案 0 :(得分:4)

感谢Squirrel和其他评论者,我键入查询的方式使它成为两个单独的查询。

我发现的正确方法是将它们组合为一个:

SELECT COUNT(ID), ISNULL(Name, 'No Name')
FROM dbo.People
GROUP BY Name;

答案 1 :(得分:3)

用例何时

select sum(case when name='No Name' then 1 else 0 end) as cnt,name from
(
 SELECT coalesce(Name, 'No Name' ) as name
 FROM dbo.People
) t group by name

答案 2 :(得分:0)

您是否只想获取NULL出现?

那么就不需要太复杂了,只是记住,您不能与缺乏价值/数据的事物进行比较,但是可以对其进行检查。

SELECT Count(ID) 
FROM dbo.People 
WHERE Name IS NULL