如何检查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