替换字符串并从SQL中的列中选择某些值

时间:2017-02-10 06:54:50

标签: sql oracle

我有给定格式的数据

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

我如何在Oracle中完成

2 个答案:

答案 0 :(得分: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的格式化这些数据的能力。但第二和第三个输出列仍然可以使用相同的方法。

答案 1 :(得分:0)

这可能是一种不同的方法,将第一列视为数字并使用正则表达式拆分第二列:

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