WHERE 子句使用可能为 NULL 的值 [英] WHERE clause using values that could be NULL

查看:48
本文介绍了WHERE 子句使用可能为 NULL 的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要做这样的事情:

DECLARE @firstname VARCHAR(35)
DECLARE @lastname VARCHAR(35)

SELECT *
FROM Customers 
WHERE Firstname = @firstname AND Lastname = @lastname

问题是@firstname@lastname 有时可能是NULL.在这些情况下,上面的查询将无法找到匹配的行,因为 NULL 永远不等于 NULL.

The problem is that @firstname and @lastname could sometimes be NULL. In those cases, the query above would fail to find matching rows because NULL is never equal to NULL.

如果这些变量之一是 NULL,如果数据库中的相应值也是 NULL,我想返回一个匹配项.但是,当然,SQL Server 使用 IS 来比较 NULL.如果上述示例中的任一值是 NULL,则不会将其视为匹配项.

If one of these variables is NULL, I'd like to return a match if the corresponding value in the database is also NULL. But, of course, SQL Server uses IS to compare for NULL. And if either value is NULL in the example above, it is not considered a match.

有没有办法做到这一点?

Is there any way to accomplish this?

推荐答案

只需使用 AND/OR 逻辑,例如

Just use AND/OR logic e.g.

SELECT *
FROM Customers
WHERE ((Firstname IS NULL AND @firstname IS NULL) OR Firstname = @firstname)
AND ((Lastname IS NULL AND @lastname IS NULL) OR Lastname = @lastname);

这篇关于WHERE 子句使用可能为 NULL 的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆