Oracle PL / SQL将字符串拆分为列,转换为数字,然后插入到新表中

时间:2014-06-05 04:03:22

标签: sql database oracle

让我说我有这个表,varchar列包含以下值:

|   column1 |
|-----------|
|    (2, 7) |
| (2.24, 5) |
| (0, 43.5) |

我希望能够从column1中获取这些值并将它们插入到具有的表中 两个数字列(将子串转换为数字);到目前为止,我已经完成了以下工作:

SELECT REGEXP_SUBSTR(PtsString.column1, '[^( ,]+', 1, 1) col_one,
       REGEXP_SUBSTR(PtsString.column1, '[^ )]+', 1, 2) col_two
FROM PuntosString;

它给了我这个输出:

| PT_ONE  | PT_TWO  |
|---------|---------|
|       2 |       7 |
|    2.24 |       5 |
|       0 |    43.5 |

我想创建一个函数,从pt_onept_two中提取这些子字符串,将它们转换为数字并将它们插入表NumPts (p1 number, p2 number);

你会建议我解决这个问题?

谢谢!

解决

所以在鹰派推荐之后,我做了以下工作,能够将字符串转换为数字并将它们插入NumPts表中

INSERT INTO NumPts(p1,p2)
SELECT 
(TO_NUMBER(REGEXP_SUBSTR(PtsString.column1, '[^( ,]+', 1, 1))),
(TO_NUMBER(REGEXP_SUBSTR(PtsString.column1, '[^ )]+', 1, 2)))
FROM PtsString;

1 个答案:

答案 0 :(得分:0)

您是否尝试过TO_NUMBER功能:

SELECT TO_NUMBER(REGEXP_SUBSTR(PtsString.column1, '[^( ,]+', 1, 1)) col_one,
       TO_NUMBER(REGEXP_SUBSTR(PtsString.column1, '[^ )]+', 1, 2)) col_two
FROM PuntosString;