例如我有一个像这样的[表]:
Code Name
123 ABC
NULL CBD
231 EFG
我需要通过[code]过滤那个[table]。我可以使用select * from [table] where [code] like '%' + @parameter + '%'
。但是这个查询并不好,因为:
予。如果将@parameter指定为null或将@parameter指定给'',则不会使用[code] null提取行。
II。如果我使用查询select * from [table] where [code] like '%' + @parameter + '%' or [code] is null
,我总是会获得带有空值的提取行,即使例如@parameter =' 12'。
我需要能够将@parameter分配给某个字符串 - 空的或非空的ant get [table]过滤。
答案 0 :(得分:2)
如果我理解正确,这是一个SQL Server版本(其他版本可能在串联中有所不同):
select *
from mytable
where code like '%' + @parameter + '%'
or (code is null and @parameter is null)
答案 1 :(得分:0)
我找到了方法。此查询有效:
declare @parameter nvarchar(max)
if @parameter is null
set @parameter = ''
select [code] from (select coalesce([code],'') from [table]) abc where abc.[code] like '%' + @parameter + '%'