gpt4 book ai didi

WHERE 子句中的 Oracle CASE

转载 作者:行者123 更新时间:2023-12-02 01:17:46 26 4
gpt4 key购买 nike

有人可以帮我在 oracle 中进行以下查询吗?
逻辑是,如果此人有一个友好的名字,则使用它来匹配“搜索”标准。否则,尝试与 realname 列匹配。

select * from people where   
case when customer_friendlyname is null then realname like '%abcd%'
else
case when customer_friendlyname is not null then customer_friendlyname like '%abcd%'
end
end

如果有人能看一看,我将不胜感激。谢谢!

最佳答案

在 Oracle 中, bool 表达式不能像其他类型的表达式一样对待;例如,CASE 表达式不能对它们求值。所以你需要重写它。

在这种情况下,由于您在两个分支中都有相同的 LIKE '%abcd%' 谓词,您可以将其分解:

WHERE ( CASE WHEN customer_friendlyname IS NULL
THEN realname
ELSE customer_friendlyname
END
) LIKE '%abcd%'

但使用 the built-in NVL function 更简单,然后写:

WHERE NVL(customer_friendlyname, realname) LIKE '%abcd%'

关于WHERE 子句中的 Oracle CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9155114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com