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

Nov*_*Net 17 t-sql

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

例如,如果我想检查:

select * from UserProfile WHERE PropertydefinitionID in (40, 53) and PropertyValue is null or empty
Run Code Online (Sandbox Code Playgroud)

Chr*_*rin 34

这样做你想要的吗?

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

  • 这非常有效.但是,如果你有一个情况(比如我),其中一个带空格的列应该被视为空,那么只需添加LTRIM()和RTRIM().使用Christian的例子,这将是`或LTRIM(RTRIM(PropertyValue))=''`. (10认同)
  • 爱它。@FumblesWithCode——非常好,考虑到你的句柄! (2认同)

Den*_*vin 19

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

SELECT *
FROM UserProfile
WHERE PropertydefinitionID in (40, 53)
  AND (LEN(ISNULL(PropertyValue,'')) = 0)
Run Code Online (Sandbox Code Playgroud)


beh*_*nji 8

这是我检查"if null或empty"的首选方法:

SELECT * 
FROM UserProfile 
WHERE PropertydefinitionID in (40, 53) 
AND NULLIF(PropertyValue, '') is null
Run Code Online (Sandbox Code Playgroud)

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


Jas*_*ger 6

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

SELECT ISNULL(NULLIF([PropertyValue], ''), 'Uncategorized') FROM UserProfile
Run Code Online (Sandbox Code Playgroud)

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