将 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
/未知,则只会应用最小限制。请参阅下面的演示。
怎么样:
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)
我有一个 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
/未知,则只会应用最小限制。请参阅下面的演示。
怎么样:
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)