我想知道如何在 SQL Server 的 WHERE 子句中同时使用 NULL 和空字符串。我需要找到具有空值或空字符串的记录。谢谢。
Select *
From Table
Where (col is null or col = '')
或者
Select *
From Table
Where IsNull(col, '') = ''
SELECT ct.ID,
ISNULL(NULLIF(ct.LaunchDate, ''), null) [LaunchDate]
FROM [dbo].[CustomerTable] ct
您可以用您的替换值替换 null
。
SELECT *
FROM yourTable
WHERE yourColumn IS NULL OR yourColumn = ''
SELECT *
FROM TableName
WHERE columnNAme IS NULL OR
LTRIM(RTRIM(columnName)) = ''
ltrim
和rtrim
。原因是:如果只有空格,单个修剪将删除所有空格。例如,您不关心比较失败的原因是剩下了“abc”还是“ abc”。 - ToolmakerStevetrim
函数删除的是空格而不是空白符——至少文档是这么说的。 - Auspex查找列为NULL
、空字符串或空白字符(空格、制表符)的行:
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')=''
查找列为NOT NULL
,空字符串或空格(空格、制表符)的行:
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')<>''
一些可搜索的方法sargable...
SELECT *
FROM #T
WHERE SomeCol = '' OR SomeCol IS NULL;
SELECT *
FROM #T
WHERE SomeCol = ''
UNION ALL
SELECT *
FROM #T
WHERE SomeCol IS NULL;
SELECT *
FROM #T
WHERE EXISTS ((SELECT NULL UNION SELECT '') INTERSECT SELECT SomeCol);
还有一些不可搜索的...
SELECT *
FROM #T
WHERE IIF(SomeCol <> '',0,1) = 1;
SELECT *
FROM #T
WHERE NULLIF(SomeCol,'') IS NULL;
SELECT *
FROM #T
WHERE ISNULL(SomeCol,'') = '';
我的最佳解决方案:
WHERE
COALESCE(char_length(fieldValue), 0) = 0
COALESCE函数返回表达式列表中第一个非空值的表达式。
如果fieldValue为空或空字符串,则返回第二个元素,然后返回0。
因此0等于0,则此fieldValue为null或空字符串。
例如,在Python中:
def coalesce(fieldValue):
if fieldValue in (null,''):
return 0
祝你好运
这是丑陋的MSSQL:
CASE WHEN LTRIM(RTRIM(ISNULL([Address1], ''))) <> '' THEN [Address2] ELSE '' END
SELECT *
FROM Table
WHERE column like '' or column IS NULL OR LEN(column) = 0