我使用的是SQL Server 2005。我有一个带有文本列的表,在表中有许多行,其中该列的值不是空的,但它是空的。试着对比”会得到这样的回答:
数据类型text和varchar在不等于操作符中是不兼容的。
是否有一个特殊的函数来确定文本列的值是否为空而不是空?
我使用的是SQL Server 2005。我有一个带有文本列的表,在表中有许多行,其中该列的值不是空的,但它是空的。试着对比”会得到这样的回答:
数据类型text和varchar在不等于操作符中是不兼容的。
是否有一个特殊的函数来确定文本列的值是否为空而不是空?
当前回答
我知道这个帖子很古老,但是我发现它很有用。
它没有解决我的问题,返回记录与非空文本字段,所以我认为我将添加我的解决方案。
这就是where从句对我有用。
WHERE xyz LIKE CAST('% %' as text)
其他回答
DECLARE @temp as nvarchar(20)
SET @temp = NULL
--SET @temp = ''
--SET @temp = 'Test'
SELECT IIF(ISNULL(@temp,'')='','[Empty]',@temp)
只获取空值(而不是空值):
SELECT * FROM myTable WHERE myColumn = ''
获取空值和空值:
SELECT * FROM myTable WHERE myColumn IS NULL OR myColumn = ''
只获取空值:
SELECT * FROM myTable WHERE myColumn IS NULL
获取非null和empty的值:
SELECT * FROM myTable WHERE myColumn <> ''
记住,只在必要时使用LIKE短语,因为与其他类型的搜索相比,它们会降低性能。
ISNULL(
case textcolum1
WHEN '' THEN NULL
ELSE textcolum1
END
,textcolum2) textcolum1
使用DATALENGTH方法,例如:
SELECT length = DATALENGTH(myField)
FROM myTABLE
你必须做到这两点:
从文本为空或类似文本的表中选择*