在Postgresql Rust Select中处理NULL值

gmxoilav  于 2022-12-26  发布在  PostgreSQL
关注(0)|答案(1)|浏览(173)

我提出了一堆关于在rust-postgresql中处理NULL值的问题,但是他们没有提到我个人的情况。
我需要使用带有可以为NULL的参数的WHERE来选择行,例如

SELECT id FROM TABLE WHERE name=$1

如果用于设置$1的选项为None,则它不会检索任何行,因此我必须在IF下拆分查询,如下所示

if myname.is_some()

    SELECT id FROM TABLE WHERE name=$1
else

    SELECT id FROM TABLE WHERE name=NULL

有没有更好的方法用一行代码来处理WHERE子句中的NULL?
我试着用“默认”的方式处理,希望有更快的方式。

u3r8eeie

u3r8eeie1#

如果NULL参数表示“所有行”,则可以使用OR:

SELECT id 
FROM TABLE 
WHERE name = $1
   OR $1 IS NULL;

如果要查找那些在参数为NULL时名称为NULL的对象,可以使用IS NOT DISTINCT FROM

SELECT id 
FROM TABLE 
WHERE name is not distinct from $1

相关问题