将 Null 值替换为无限

Replace Null value to infinite

我有一个 table,其中包含字段最小值、最大值和金额。 max 列的最后一个值始终为空,并且根据我的逻辑,它表示最小值及以上。 在 sql 中的 BETWEEN 查询期间,我尝试为:

 Select t.amount from my_table t where 25000 between t.min and NVL(t.max, ~0);

此外,我试过:

 Select t.amount  from my_table t where 25000 between t.min and COALESCE(t.max, ~0);

None 如果值介于 min 和 NULL 之间,其中 return 我一行。

示例数据是:

我不确定我是否完全了解您在这里尝试做的事情,但我感觉到您需要逻辑来处理 table 中的未知最大值,并且这些未知值由 NULL。假设你想在一个未知的最大值意味着不被最大值限制的假设下查询,那么使用:

SELECT amount
FROM my_table
WHERE min <= 25000 AND (max >= 25000 OR max IS NULL);

如果 max 恰好是 NULL/未知,则只会应用最小限制。请参阅下面的演示。

Demo

怎么样:

25000 between t.min and nvl(t.max, 25000)

如果 t.max 为 null,nvl() 函数 returns 25000 将满足 between 运算符的上限。

如果要比较的值存储在列中,比如 col1,那么您可以这样做:

col1 between t.min and nvl(t.max, col1)