Where 子句中的 T-SQL 变量

Ebe*_*rtB 1 t-sql sql-server

在这种情况下,我想返回公司 ABC... 并且联系人为空的记录。@Contact为空时它不会返回任何内容。或者任何与此相关的变量。想法?

DECLARE @Customer NVARCHAR(40) = 'ABC Company',
        @Contact NVARCHAR(40) = NULL

SELECT
    Company
FROM
    company
WHERE
    contact = @Contact AND customer = @Customer
Run Code Online (Sandbox Code Playgroud)

谢谢,EB

Joe*_*ips 5

NULL 的特殊之处在于它意味着 UNKNOWN。

已知值(联系人)永远不会等于未知值。您需要一个 OR 语句来检查它是否相等 OR 为空

where (contact = @Contact OR (contact is null AND @Contact is null))
and customer = @Customer
Run Code Online (Sandbox Code Playgroud)

也许是这样的?