【发布时间】:2021-05-12 10:05:50
【问题描述】:
我需要这样做:
DECLARE @firstname VARCHAR(35)
DECLARE @lastname VARCHAR(35)
SELECT *
FROM Customers
WHERE Firstname = @firstname AND Lastname = @lastname
问题是@firstname 和@lastname 有时可能是NULL。在这些情况下,上面的查询将无法找到匹配的行,因为NULL 永远不会等于NULL。
如果这些变量之一是NULL,如果数据库中的相应值也是NULL,我想返回一个匹配项。但是,当然,SQL Server 使用IS 来比较NULL。如果在上例中任一值为NULL,则不视为匹配。
有没有办法做到这一点?
【问题讨论】:
-
@Charlieface:不是这样。我接受的答案回答得更好。
-
@JonathanWood 实际上 Charlieface 的建议 is 比我的 (IMO) 好。更加简单和可扩展。
-
如你所愿。我发现我的版本不那么麻烦。 @DaleK 我认为在大多数情况下性能并没有太大的不同,只是更加整洁,尤其是在进行大量比较时。
-
@Charlieface 说句公道话,我不认为这是一个骗子,OP 在问 如何 这样做,而建议的骗子在问 如何改进.
标签: sql sql-server tsql null