我有给定格式的数据
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中完成
答案 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