将Null值替换为无穷大

时间:2019-10-22 09:56:24

标签: mysql

我有一个表,其中包含最小,最大和金额字段。 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之间,则没有一个返回我一行。

样本数据为: enter image description here

2 个答案:

答案 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 /未知,那么将仅应用最小限制。请参见下面的演示。

Demo

相关问题