2017-02-10 39 views
1

我有數據在給定的格式從列替換字符串,並挑選一定值SQL

Column 1  Column 2 
$10,500.00 Father (FA) 
$165.00  Self (S) 
$315.00  Self (S) 

我需要柱1轉換成數和單獨的列2中2個字段如下所示

Column 1 Column 2 Column 3 
10500  Father   FA 
165   Self   S 
315   Self   S 

我怎樣才能做到在甲骨文

+0

什麼數據類型有1列? – miracle173

回答

1
SELECT 
    REPLACE(REPLACE(SUBSTR(col1, 1, INSTR(co1, '.') - 1), '$', ''), ',', '') AS col1, 
    SUBSTR(col2, 1, INSTR(col2, ' ') - 1) AS col2, 
    SUBSTR(col2, INSTR(col2, '(') + 1, INSTR(col2, ')') - INSTR(col2, '(') - 1) AS col3 
FROM yourTable 

這個答案假定兩個原始列包含文本。如果第一列實際上是從數字列派生的,那麼您應該利用Oracle格式化這些數據的能力。但第二個和第三個輸出列仍然可以使用相同的方法。

0

這可能是一個不同的方法,治療的第一列的數量和使用正則表達式來分割第二欄:

select to_number(Column1, 'L999G999G999D99', 'NLS_NUMERIC_CHARACTERS = ''.,'' NLS_CURRENCY = ''$'' '), 
     regexp_substr(Column2, '[^(]*'), 
     regexp_substr(Column2, '\((.*)\)', 1, 1, '', 1) 
from test