我有一张有各种数字格式的桌子,如:
这些是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中的各种数字吗?thx
发布于 2013-02-25 15:36:30
如果你知道它们都是数字,我建议使用cast()
select cast(col as float)https://stackoverflow.com/questions/15070500
复制相似问题