如何在SQL中使用NULL或空string

我想知道如何在SQL Server的WHERE子句中同时使用NULL和一个空string。 我需要查找具有空值或空string的logging。 谢谢。

 Select * From Table Where (col is null or col = '') 

要么

 Select * From Table Where IsNull(col, '') = '' 

你可以简单地做到这一点:

 SELECT * FROM yourTable WHERE yourColumn IS NULL OR yourColumn = '' 

在select查询中,有人可以这样使用。

  SELECT ct.ID, ISNULL(NULLIF(ct.LaunchDate, ''), null) [LaunchDate] FROM [dbo].[CustomerTable] ct 

你可以用你的替代值replacenull

 SELECT * FROM TableName WHERE columnNAme IS NULL OR LTRIM(RTRIM(columnName)) = '' 

查找col为NULL行,空string或空格(空格,制表符):

 SELECT * FROM table WHERE ISNULL(LTRIM(RTRIM(col)),'')='' 

要findcol NOT NULL ,空string或空格(空格,制表符)的行:

 SELECT * FROM table WHERE ISNULL(LTRIM(RTRIM(col)),'')<>'' 

一些可靠的方法…

 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,'') = ''; 

您可以使用isnull函数来获取文本字段的空值和空值:

 SELECT * FROM myTable WHERE isnull(my_nullable_text_field,'') = '' 

这是丑陋的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 
 --setup IF OBJECT_ID('tempdb..#T') IS NOT NULL DROP TABLE #T; CREATE TABLE #T(ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY, NAME VARCHAR(10)) INSERT INTO #T (Name) VALUES('JOHN'),(''),(NULL); SELECT * FROM #T 1 JOHN 2 -- is empty string 3 NULL 

您可以通过使用NULLIF将其转换为NULL来检查NULL

 --here you set '' to null UPDATE #T SET NAME = NULLIF(NAME,'') SELECT * FROM #T 1 JOHN 2 NULL 3 NULL 

或者你可以使用SELECT ISNULL(NULL,'')来检查NULL''

 -- here you set NULL to '' UPDATE #T SET NAME = ISNULL(NULL,'') WHERE NAME IS NULL SELECT * FROM #T 1 JOHN 2 -- is empty string 3 -- is empty string --clean up DROP TABLE #T 

我最好的解决scheme

 WHERE COALESCE(char_length(fieldValue), 0) = 0 

COALESCE返回expression式列表()中的第一个非空expr。

如果fieldValue为null或空string,那么:我们将返回第二个元素,然后返回0。

所以0等于0,那么这个fieldValue是null或空string。

以python为例:

 def coalesce(fieldValue): if fieldValue in (null,''): return 0 

祝你好运

在sproc中,你可以使用下面的条件:

 DECLARE @USER_ID VARCAHR(15)=NULL --THIS VALUE IS NULL OR EMPTY DON'T MATTER IF(COALESCE(@USER_ID,'')='') PRINT 'HUSSAM' 

通过这个function:

 ALTER FUNCTION [dbo].[isnull](@input nvarchar(50),@ret int = 0) RETURNS int AS BEGIN return (case when @input='' then @ret when @input is null then @ret else @input end) END 

并使用这个:

dbo.isnull(值,0)