如何检查列是否等于可以为null的变量

LEM*_*LEM 1 sql sql-server

我有一个表包含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)