我正在使用SQL Server2005。我有一个带有文本列的表,并且该表中有很多行,其中该列的值不为null,但为空。尝试与“”进行比较,将产生以下响应:
数据类型text和varchar在不等于运算符中不兼容。
是否有一个特殊功能来确定文本列的值是否不是null而是空的?
我正在使用SQL Server2005。我有一个带有文本列的表,并且该表中有很多行,其中该列的值不为null,但为空。尝试与“”进行比较,将产生以下响应:
数据类型text和varchar在不等于运算符中不兼容。
是否有一个特殊功能来确定文本列的值是否不是null而是空的?
Answers:
where datalength(mytextfield)=0
OR mytextfield IS NULL
您的专栏文章的时间NULL
mytextfield IS NULL *OR*
:-)
实际上,您只需要使用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和empty以外的值:
SELECT * FROM myTable WHERE myColumn <> ''
并且请记住仅在必要时使用LIKE短语,因为与其他类型的搜索相比,它们会降低性能。
myColumn IS NOT NULL AND my column = '';
吗
使用IS NULL运算符:
Select * from tb_Employee where ename is null
使用DATALENGTH方法,例如:
SELECT length = DATALENGTH(myField)
FROM myTABLE
我想显示一个预定义的文本(“没有可用的实验室”),如果该值为空或空,并且我的朋友帮了我这个忙:
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 mytable where convert(varchar, mycolumn) = ''
希望对你有帮助!
最好不要isnull
使用a 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)