如何使用SQL查询select语句检查列是空还是null?

时间:2011-01-24 08:57:23

标签: tsql

如何使用SQL select语句检查列是空还是空?

例如,如果我想检查:

select * from UserProfile WHERE PropertydefinitionID in (40, 53) and PropertyValue is null or empty

6 个答案:

答案 0 :(得分:32)

这样做你想要的吗?

SELECT *
FROM UserProfile
WHERE PropertydefinitionID in (40, 53)
  AND (    PropertyValue is NULL
        or PropertyValue = '' );

答案 1 :(得分:19)

这是一种略有不同的方式:

SELECT *
FROM UserProfile
WHERE PropertydefinitionID in (40, 53)
  AND (LEN(ISNULL(PropertyValue,'')) = 0)

答案 2 :(得分:8)

这是我检查“if null or empty”的首选方法:

SELECT * 
FROM UserProfile 
WHERE PropertydefinitionID in (40, 53) 
AND NULLIF(PropertyValue, '') is null

由于它修改了搜索参数(SARG),因此可能会出现性能问题,因为它可能不会使用PropertyValue列上的现有索引。

答案 3 :(得分:1)

如果希望将空格和NULL显示为其他文本,例如“未分类”,则可以简单地说...

w_alarms.siteid[w_alarms.siteid>3].value_counts().head(10)

以上内容很好地回答了主要问题。这个答案是对它的扩展,对读者有价值。

答案 4 :(得分:0)

上面的答案使我有99%的答案(感谢Denis Ivin!)。对于我的PHP / MySQL实现,我需要稍微修改一下语法:

SELECT *
FROM UserProfile
WHERE PropertydefinitionID in (40, 53)
AND (LENGTH(IFNULL(PropertyValue,'')) = 0)

LEN变为LENGTH,ISNULL变为IFNULL。

答案 5 :(得分:0)

select isnull(nullif(CAR_OWNER_TEL, ''), 'NULLLLL')  PHONE from TABLE

如果为空,则将 CAR_OWNER_TEL 替换为 NULLLLL (MS SQL)