2017-07-14 69 views
-1

我需要选择一个varchar2值大于45%(来自表ABC,列名XYZ)小数点,就像select语句应该返回0.45。 如何做到这一点?我没有得到如何使用regular_expression,或通过修剪和转换为数字。将varchar2值转换为oracle中的十进制查看

+0

选择TO_NUMBER(更换(替换( '> 45%','>',''),'%',''))/ 100; - trythat – g00dy

+0

你为什么需要这个?另外,如果条件> 45%,为什么select语句返回0.45?它不应该返回所有值大于0.45的值吗? – mathguy

+0

其工作的具体价值,但我需要做这个列值。例如: 选择REGEXP_REPLACE( '列名', '\> | \%', '')/ 100 从 '' 从 'TABLE_NAME' 其中REGEXP_REPLACE TABLE_NAME ' ,OR 选择' 列名('column_name','\> | \%','')/ 100 但是它返回的无效数字错误。列值的可能模式可能包括“> 45%”,“<60%”等。 –

回答

0

这应该这样做。中删除的字符>%和devide由100中的字符串结果被自动转换为数字

select regexp_replace('>45%', '\>|\%', '')/100 from dual 

的另一种方法:删除所有非数字字符:

select regexp_replace('>45%', '[^0-9]', '')/100 from dual 
+0

这将如何区分>和<? (当然假设,我真的不明白OP会使用什么。) – mathguy

+0

@mathguy不要求区分'<' and '>'。 –

+0

@ MK-加油!已经接受这个答案,不能比这更好。 – g00dy

相关问题