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

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

数据typestext和varchar在不相等的运算符中不兼容。

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

where datalength(mytextfield)=0 
 ISNULL( case textcolum1 WHEN '' THEN NULL ELSE textcolum1 END ,textcolum2) textcolum1 

其实,你只需要使用LIKE运算符。

 SELECT * FROM mytable WHERE mytextfield LIKE '' 

只获取空值(而不是空值):

 SELECT * FROM myTable WHERE myColumn = '' 

要获得空值和空值:

 SELECT * FROM myTable WHERE myColumn IS NULL OR myColumn = '' 

只获得空值:

 SELECT * FROM myTable WHERE myColumn IS NULL 

要获得除null和空之外的值:

 SELECT * FROM myTable WHERE myColumn <> '' 

请记住只在必要时使用LIKE短语,因为与其他types的search相比,它们会降低性能。

我会testing反对SUBSTRING (textColumn,0,1)

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

它没有解决我的问题返回非空文本字段的logging,所以我想我会添加我的解决scheme。

这是为我工作的where子句。

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

你可以这样做

 SELECT * FROM TABLE WHERE FIELDNAME='' 

使用IS NULL运算符:

 Select * from tb_Employee where ename is null 

是空和一个空string是否相等? 如果是的话,我会在我的应用程序中包含逻辑(或者,如果应用程序是“开箱即用”的,也许是触发器)?强制该字段为空或“”,而不是另一个。 如果你用''去,那么你可以将列设置为NOT NULL。 只是一个数据清洁的事情。

我想要显示一个预定义的文本(“没有实验室可用”),如果该值为空或空,我的朋友帮助我:

 StrengthInfo = CASE WHEN ((SELECT COUNT(UnitsOrdered) FROM [Data_Sub_orders].[dbo].[Snappy_Orders_Sub] WHERE IdPatient = @PatientId and IdDrugService = 226)> 0) THEN cast((S.UnitsOrdered) as varchar(50)) ELSE 'No Labs Available' END 

你必须这样做:

SELECT * FROM Table WHERE Text IS NULL or Text LIKE ''

 SELECT * FROM TABLE WHERE ISNULL(LTRIM(RTRIM(FIELD)),''='' 

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

如果需要处理这样一个事实,那就是在你的用例场景中空格只能是空的,因为下面的查询将返回1而不是0。

 SELECT datalength(' ') 

所以,我会去做这样的事情:

 SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], '')))) 

使用DATALENGTH方法,例如:

 SELECT length = DATALENGTH(myField) FROM myTABLE 
Interesting Posts