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

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

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


当前回答

用一个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

其他回答

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

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

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

SELECT * FROM myTable WHERE myColumn = ''

获取空值和空值:

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

只获取空值:

SELECT * FROM myTable WHERE myColumn IS NULL

获取非null和empty的值:

SELECT * FROM myTable WHERE myColumn <> ''

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

where datalength(mytextfield)=0

试试这个:

select * from mytable where convert(varchar, mycolumn) = ''

希望能帮到你!