如何使用SQL select语句检查列是空还是空?
例如,如果我想检查:
select * from UserProfile WHERE PropertydefinitionID in (40, 53) and PropertyValue is null or empty
答案 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)