我正在使用 SQL Server 2005。我有一张表,其中有一个文本列,该列有许多行的值不为null,但为空。尝试与''进行比较会得到以下响应:
在不等于运算符中,数据类型text和varchar不兼容。
是否有特殊函数可以确定文本列的值不为null但为空吗?
我正在使用 SQL Server 2005。我有一张表,其中有一个文本列,该列有许多行的值不为null,但为空。尝试与''进行比较会得到以下响应:
在不等于运算符中,数据类型text和varchar不兼容。
是否有特殊函数可以确定文本列的值不为null但为空吗?
where datalength(mytextfield)=0
ISNULL(
case textcolum1
WHEN '' THEN NULL
ELSE textcolum1
END
,textcolum2) textcolum1
实际上,你只需要使用LIKE运算符。
SELECT * FROM mytable WHERE mytextfield LIKE ''
要仅获取空值(而非 null 值):
SELECT * FROM myTable WHERE myColumn = ''
获取null和空值:
要获取null和空值:
SELECT * FROM myTable WHERE myColumn IS NULL OR myColumn = ''
仅获取 null 值:
SELECT * FROM myTable WHERE myColumn IS NULL
获取除 null 和空值之外的数值:
SELECT * FROM myTable WHERE myColumn <> ''
请记住,仅在必要时使用LIKE短语,因为与其他类型的搜索相比,它们会降低性能。
myColumn IS NOT NULL AND my column = '';
吗? - bcsb1001SELECT * FROM TABLE
WHERE ISNULL(FIELD, '')=''
SELECT * FROM TABLE
WHERE IFNULL(FIELD, '')=''
- Cláudio Silva使用IS NULL运算符:
Select * from tb_Employee where ename is null
不要使用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
我知道这篇文章很古老,但我发现它很有用。
它没有解决我的问题,即返回具有非空文本字段的记录,因此我想添加我的解决方案。
这是对我有效的where子句。
WHERE xyz LIKE CAST('% %' as text)
我想要在值为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