如何检查SQL Server文本列是否为空?

ato*_*mey 176 sql-server sql-server-2005 emptydatatext sqldatatypes notnull

我正在使用SQL Server 2005.我有一个带有文本列的表,我在表中有很多行,此列的值不为null,但它是空的.试图与''进行比较产生这种反应:

数据类型text和varchar在不等于运算符时不兼容.

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

Eri*_*ard 285

where datalength(mytextfield)=0
Run Code Online (Sandbox Code Playgroud)

  • `mytextfield 为 NULL *OR*` :-) (4认同)
  • 这不是实际问题,只是对只阅读标题的人的评论,当您的列可以为“NULL”时,不要忘记添加“OR mytextfield IS NULL” (3认同)
  • @ ban-geoengineering SQL Server T-SQL不支持短路评估技术,因此这里的顺序不会影响结果. (3认同)

小智 47

ISNULL(
case textcolum1
    WHEN '' THEN NULL
    ELSE textcolum1
END 
,textcolum2) textcolum1
Run Code Online (Sandbox Code Playgroud)


Dan*_*ane 24

实际上,您只需使用LIKE运算符即可.

SELECT * FROM mytable WHERE mytextfield LIKE ''
Run Code Online (Sandbox Code Playgroud)


Nim*_*ima 5

要仅获取空值(而不是空值):

SELECT * FROM myTable WHERE myColumn = ''
Run Code Online (Sandbox Code Playgroud)

要获取null和empty值:

SELECT * FROM myTable WHERE myColumn IS NULL OR myColumn = ''
Run Code Online (Sandbox Code Playgroud)

要仅获取空值:

SELECT * FROM myTable WHERE myColumn IS NULL
Run Code Online (Sandbox Code Playgroud)

要获取null和empty以外的值:

SELECT * FROM myTable WHERE myColumn <> ''
Run Code Online (Sandbox Code Playgroud)


并且请记住仅在必要时使用LIKE短语,因为与其他类型的搜索相比,它们会降低性能.