Oracle SQL - 查找数据集的MIN值,但在MIN计算中排除一个值

con*_*att 1 sql oracle oracle10g

Oracle版本:10g

我正在尝试使用该MIN函数来查找数据集的最小值/最小值.我正在执行MINVARCHAR2列是一列.此列将包含数值或值" - ",表示该值不适用.

MIN()列上执行函数时,始终返回" - ".
我想找到一种方法来排除 MIN语句中计算的' - '.我不能在语句中使用WHERE子句来过滤掉带有' - '的列,因为这会排除有效数据.

注意:这是一个巨大的遗留查询(500多行),因此重写这个大规模查询并不是一个真正的选择.

JNK*_*JNK 7

MIN(CASE WHEN ColX = '--' THEN NULL ELSE ColX END)

这在SQL Server中是有效的,我认为也可能适用于Oracle.

作为旁注,永远不要在字符串字段中存储数字数据.

从空间角度来看效率很低,在进行不等式比较时会得到一些奇怪的结果.

如果表中有这些行:

010
009
1
Run Code Online (Sandbox Code Playgroud)

MAX值将1MIN值将是009