我有一个表包含varchar列,允许null或空值.
我正在编写一个包含可以分配给空值或常规字符串(非空)的变量的存储过程
它的定义如下:
declare @myvar varchar(50)
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试编写一个返回列等于此变量的行的查询,或者它是空的或null.到目前为止,我认为这将起作用:
select * from mytable where mycolumn =@myvar or mycolumn =''
Run Code Online (Sandbox Code Playgroud)
但是,如果列为null且变量为null,则不会返回任何值.
我知道我可以做这样的事情:
select * from mytable where (mycolumn = @myvar and mycolum is not null) or mycolumn is null or mycolumn =''
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
PS:我不想做ANSI_NULLS OFF
谢谢
wes*_*esm 11
如果希望列与参数完全匹配(包括空值)
DECLARE @myVariable varchar(10)
SELECT *
FROM mytable
WHERE ((@myVariable IS NULL AND myColumn IS NULL) OR myColumn = @myVariable)
Run Code Online (Sandbox Code Playgroud)