我有一个具有各种数字格式的表格,例如:
- 2
- 3.44189
- 4,1
- -0.0022
- 9.9E+37
- 1.9E-12
这些是 varchar2 列中的测量值,每个测量值都有一个带有上限和下限值的规范(格式相同),所以我想要的是这些边界之间的测量值
SELECT VALUE, LOW, HIGH FROM MEASUREMENTS
WHERE to_number(replace(VALUE,',','.'), '999999999D99999999999999999999999999999999999999','NLS_NUMERIC_CHARACTERS = ''.,''')
> to_number(replace(LOW,',','.'), '999999999D99999999999999999999999999999999999999','NLS_NUMERIC_CHARACTERS = ''.,''')
AND to_number(replace(VALUE,',','.'), '999999999D99999999999999999999999999999999999999','NLS_NUMERIC_CHARACTERS = ''.,''')
<=to_number(replace(HIGH,',','.'), '999999999D99999999999999999999999999999999999999','NLS_NUMERIC_CHARACTERS = ''.,''')
这些查询适用于上面写的每个数字,除了像 9.9E+37 这样的指数数字。我发现用 TO_CHAR 重写,但它不适用于 varchar
有没有人可以将存储为 varchar 的各种数字相互比较?谢谢