我使用的是SQL Server 2005。我有一个带有文本列的表,在表中有许多行,其中该列的值不是空的,但它是空的。试着对比”会得到这样的回答:

数据类型text和varchar在不等于操作符中是不兼容的。

是否有一个特殊的函数来确定文本列的值是否为空而不是空?


当前回答

你必须做到这两点:

从文本为空或类似文本的表中选择*

其他回答

你必须做到这两点:

从文本为空或类似文本的表中选择*

我将测试SUBSTRING(textColumn, 0,1)

我知道这个问题有很多替代答案,但我只是想把我发现的最佳解决方案放在一起,由@Eric Z Beard和@Tim Cooper和@Enrique Garcia和@Uli Köhler。

如果需要处理在用例场景中space-only可能与空相同的事实,因为下面的查询将返回1,而不是0。

SELECT datalength(' ')

因此,我会选择这样的东西:

SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], ''))))
ISNULL(
case textcolum1
    WHEN '' THEN NULL
    ELSE textcolum1
END 
,textcolum2) textcolum1

我知道这个帖子很古老,但是我发现它很有用。

它没有解决我的问题,返回记录与非空文本字段,所以我认为我将添加我的解决方案。

这就是where从句对我有用。

WHERE xyz LIKE CAST('% %' as text)