SQL中@parameter类似于null

时间:2017-03-07 20:35:11

标签: sql

例如我有一个像这样的[表]:

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]过滤。

2 个答案:

答案 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 + '%'