gpt4 book ai didi

sql - Oracle SQL 中最小值但不为 NULL

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

我想在我的程序中使用函数 LEAST 来查找最小值。问题是有些值可能是 NULL,所以如果我这样做

select least(NULL,0,1) from dual

我得到的答案是 NULL,这可能是正确的,因为这不是我期望返回的内容。我想获得最小的真实非零值。非常感谢任何帮助。

最佳答案

如果任何参数为 NULL,则您希望采用其他参数中的最少值。如果所有参数均为 NULL,则您希望返回 NULL。

我可能会使用这样的两个参数:

LEAST(NVL(colA,colB), NVL(colB,colA))

尽管有 >2 个参数,它开始变得丑陋:

LEAST(COALESCE(colA,colB,colC)
,COALESCE(colB,colA,colC)
,COALESCE(colC,colA,colB))

此时我会开始考虑魔法值;但这可能有问题(例如,如果合法值之一魔法值怎么办?):

SELECT CASE WHEN r = maxv THEN NULL ELSE r END AS result
FROM (SELECT LEAST(NVL(:colA,maxv)
,NVL(:colB,maxv)
,NVL(:colC,maxv)) AS r, maxv
FROM (SELECT 9.999999999999999999999999999999999999999e125
AS maxv FROM DUAL));

关于sql - Oracle SQL 中最小值但不为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21313770/

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