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

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

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

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

504465 次浏览

我将测试子字符串(textColumn, 0,1)

where datalength(mytextfield)=0

实际上,你只需要使用LIKE操作符。

SELECT * FROM mytable WHERE mytextfield LIKE ''

null和空字符串是等价的吗?如果它们是,我会在我的应用程序中包括逻辑(或者可能是一个触发器,如果应用程序是“开箱即用”?)强制字段为null或“,但不是其他。如果你使用",那么你也可以将列设置为NOT NULL。只是数据清洁的问题。

ISNULL(
case textcolum1
WHEN '' THEN NULL
ELSE textcolum1
END
,textcolum2) textcolum1

我想有一个预定义的文本(“无实验室可用”)显示,如果值为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

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

它没有解决我的问题,返回记录与非空文本字段,所以我认为我将添加我的解决方案。

这就是where从句对我有用。

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

你必须做到这两点:

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

使用IS NULL操作符:

Select * from tb_Employee where ename is null
SELECT * FROM TABLE
WHERE ISNULL(FIELD, '')=''

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

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 <> ''
< p > < br > 记住只在必要的时候使用LIKE短语,因为与其他类型的搜索相比,它们会降低性能

我知道这个问题有很多替代答案,但我只是想把我发现的最佳解决方案放在一起@Eric Z Beard &tim Cooper和enrique Garcia &@Uli科勒。

如果需要处理在用例场景中space-only可能与空相同的事实,因为下面的查询将返回1,而不是0。

SELECT datalength(' ')

因此,我会选择这样的东西:

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

使用< >强DATALENGTH < / >强方法,例如:

SELECT length = DATALENGTH(myField)
FROM myTABLE

试试这个:

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

希望能帮到你!

与其使用isnull,不如使用case,因为它的性能更好。

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
DECLARE @temp as nvarchar(20)


SET @temp = NULL
--SET @temp = ''
--SET @temp = 'Test'


SELECT IIF(ISNULL(@temp,'')='','[Empty]',@temp)

它会做两件事:

  1. 空检查和字符串空检查
  2. 将空值替换为默认值,例如NA。
SELECT coalesce(NULLIF(column_name,''),'NA') as 'desired_name') from table;