oracle中如何比较单条语句中的空值和非空值?
how to compare null and non null values in single statement in oracle?
我正在尝试在某个 where 条件满足时获取行
select * from users where userid = :userid and objnum = :objnum;
users table 有 userid(不可为 null 的列)和 objnum(可为 null 的列)。
现在,当我想获取具有空 "objnum" 值的用户时,它不起作用,因为当我想获取 objnum 值 = 1 时,空值不是 comparable.And,然后在上面会工作。
对于 null 值,我可以通过以下查询很好地获得结果。
select * from users where userid = :userid and objnum is null;
但我的应用程序代码将 :objnum 绑定变量作为 null 或整数值 发送,我想直接在单个 query.Is 中检查它在单个查询中执行此操作?
如果您想将列值与绑定变量进行比较,并让它们匹配 NULL
和非 NULL
值,那么您需要比较 NULL
值双方 NULL
:
SELECT *
FROM users
WHERE (userid = :userid OR (userid IS NULL AND :userid IS NULL))
AND (objnum = :objnum OR (objnum IS NULL AND :objnum IS NULL));
我正在尝试在某个 where 条件满足时获取行
select * from users where userid = :userid and objnum = :objnum;
users table 有 userid(不可为 null 的列)和 objnum(可为 null 的列)。 现在,当我想获取具有空 "objnum" 值的用户时,它不起作用,因为当我想获取 objnum 值 = 1 时,空值不是 comparable.And,然后在上面会工作。
对于 null 值,我可以通过以下查询很好地获得结果。
select * from users where userid = :userid and objnum is null;
但我的应用程序代码将 :objnum 绑定变量作为 null 或整数值 发送,我想直接在单个 query.Is 中检查它在单个查询中执行此操作?
如果您想将列值与绑定变量进行比较,并让它们匹配 NULL
和非 NULL
值,那么您需要比较 NULL
值双方 NULL
:
SELECT *
FROM users
WHERE (userid = :userid OR (userid IS NULL AND :userid IS NULL))
AND (objnum = :objnum OR (objnum IS NULL AND :objnum IS NULL));