2017-07-14 64 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