我想知道如何在SQL Server的WHERE
子句中同时使用NULL和空字符串。我需要查找具有空值或空字符串的记录。感谢。
答案 0 :(得分:182)
Select *
From Table
Where (col is null or col = '')
或者
Select *
From Table
Where IsNull(col, '') = ''
答案 1 :(得分:25)
你可以这样做:
SELECT *
FROM yourTable
WHERE yourColumn IS NULL OR yourColumn = ''
答案 2 :(得分:18)
如果您需要 SELECT 部分,可以像这样使用。
SELECT ct.ID,
ISNULL(NULLIF(ct.LaunchDate, ''), null) [LaunchDate]
FROM [dbo].[CustomerTable] ct
您可以用替换值替换null
。
答案 3 :(得分:15)
SELECT *
FROM TableName
WHERE columnNAme IS NULL OR
LTRIM(RTRIM(columnName)) = ''
答案 4 :(得分:7)
要查找col为NULL
的行,空字符串或空格(空格,制表符):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')=''
要查找col为NOT NULL
的行,空字符串或空格(空格,制表符):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')<>''
答案 5 :(得分:6)
一些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,'') = '';
答案 6 :(得分:3)
这是丑陋的MSSQL:
CASE WHEN LTRIM(RTRIM(ISNULL([Address1], ''))) <> '' THEN [Address2] ELSE '' END
答案 7 :(得分:1)
SELECT *
FROM Table
WHERE column like '' or column IS NULL OR LEN(column) = 0
答案 8 :(得分:1)
您可以使用isnull
函数获取文本字段的null
和空值:
SELECT * FROM myTable
WHERE isnull(my_nullable_text_field,'') = ''
答案 9 :(得分:1)
--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
您可以使用''
将NULL
转换为NULL
,将NULLIF
检查为--here you set '' to null
UPDATE #T SET NAME = NULLIF(NAME,'')
SELECT * FROM #T
1 JOHN
2 NULL
3 NULL
NULL
或者您可以使用''
SELECT ISNULL(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
{{1}}
答案 10 :(得分:1)
我最好的解决方案:
WHERE COALESCE(char_length(fieldValue), 0) = 0
COALESCE返回表达式列表()中的第一个非空expr。
如果fieldValue为null或空字符串,则:我们将返回第二个元素,然后返回0。
因此0等于0,则此fieldValue为null或空字符串。
在python中为例子:
def coalesce(fieldValue):
if fieldValue in (null,''):
return 0
祝你好运
答案 11 :(得分:1)
在sproc中,您可以使用以下条件:
DECLARE @USER_ID VARCAHR(15)=NULL --THIS VALUE IS NULL OR EMPTY DON'T MATTER
IF(COALESCE(@USER_ID,'')='')
PRINT 'HUSSAM'
答案 12 :(得分:1)
by this 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
and use this:
dbo.isnull(value,0)
答案 13 :(得分:1)
SELECT * FROM DBO.AGENDA
WHERE
--IF @DT_START IS NULL OR EMPTY
( ISNULL( @DT_START,'' ) = '' AND DT_START IS NOT NULL ) -- GET ALL DATE
OR --ELSE
( DT_START >= @DT_START ) --FILTER
-- MORE FILTER
SELECT * FROM DBO.AGENDA
WHERE
( ( ISNULL( @DT_START,'' ) = '' AND DT_START IS NOT NULL ) OR ( DT_START >= @DT_START ) )
AND
DT_END < GETDATE()
答案 14 :(得分:1)
您检查是否为空(IS为NULL)和字符串为空(LEN(RTRIM(LTRIM(Column))))= 0 在
SELECT *
FROM AppInfra.Person
WHERE LEN(RTRIM(LTRIM(NationalCode))) = 0 OR NationalCode IS NULL
答案 15 :(得分:1)
select
isnull(column,'') column, *
from Table
Where column = ''