我使用的是SQL Server 2005。我有一个带有文本列的表,在表中有许多行,其中该列的值不是空的,但它是空的。试着对比”会得到这样的回答:
数据类型text和varchar在不等于操作符中是不兼容的。
是否有一个特殊的函数来确定文本列的值是否为空而不是空?
我使用的是SQL Server 2005。我有一个带有文本列的表,在表中有许多行,其中该列的值不是空的,但它是空的。试着对比”会得到这样的回答:
数据类型text和varchar在不等于操作符中是不兼容的。
是否有一个特殊的函数来确定文本列的值是否为空而不是空?
当前回答
试试这个:
select * from mytable where convert(varchar, mycolumn) = ''
希望能帮到你!
其他回答
使用DATALENGTH方法,例如:
SELECT length = DATALENGTH(myField)
FROM myTABLE
用一个case代替isnull,因为它的性能更好。
case when campo is null then '' else campo end
在你的问题,你需要这样做:
case when campo is null then '' else
case when len(campo) = 0 then '' else campo en
end
代码如下:
create table #tabla(
id int,
campo varchar(10)
)
insert into #tabla
values(1,null)
insert into #tabla
values(2,'')
insert into #tabla
values(3,null)
insert into #tabla
values(4,'dato4')
insert into #tabla
values(5,'dato5')
select id, case when campo is null then 'DATA NULL' else
case when len(campo) = 0 then 'DATA EMPTY' else campo end
end
from #tabla
drop table #tabla
我想有一个预定义的文本(“无实验室可用”)显示,如果值为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
你必须做到这两点:
从文本为空或类似文本的表中选择*
我将测试SUBSTRING(textColumn, 0,1)