我有一个包含各种数字格式的表格,如:
这些是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
答案 0 :(得分:9)
如果您知道它们都是数字,我建议您使用cast()
:
select cast(col as float)