我有一个表,其中包含最小,最大和金额字段。 max列的最后一个值始终为null,按照我的逻辑,它表示min值及以上。 在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);
如果该值介于min和NULL之间,则没有一个返回我一行。
答案 0 :(得分:1)
怎么样:
2019-10-22 10:56:17,981 [WorkPool-Session#1:Connection(a0437bf5-25c9-44f7-9a66-d3173e692fb2,amqp:/127.0.0.1:5672)] INFO - Publishing 440d9474-7c96-4226-8023-ca086dc0e143.product.001 to 127.0.0.1:5672.
如果25000 between t.min and nvl(t.max, 25000)
为空,则t.max
函数将返回nvl()
,它将满足25000
运算符的较高边界。
如果要比较的值存储在列中,例如说between
,则可以执行以下操作:
col1
答案 1 :(得分:0)
我不确定我是否完全了解了您在此处所做的工作,但是我感觉到您需要逻辑来处理表中的未知最大值,这些未知值由NULL
表示。假设您要在一个未知的最大值的假设下进行查询,则意味着不限制最大值,然后使用:
SELECT amount
FROM my_table
WHERE min <= 25000 AND (max >= 25000 OR max IS NULL);
如果max
恰好是NULL
/未知,那么将仅应用最小限制。请参见下面的演示。