拆分一列到拖曳列

时间:2019-10-21 06:44:41

标签: sql regex oracle

我在CurrentCurve Change <1> --> <4>列中有text值。

我想将text拆分为fromto列。

from | to
__________
1    | 4

我写这个查询

select 
  REGEXP_replace( curve.text,'CurrentCurve Change <|> --> <[0-9]>') as from,
  REGEXP_replace( curve.text,'CurrentCurve Change <[0-9]> --> <|>') as to,
from mytable

有更好的方法。

2 个答案:

答案 0 :(得分:4)

实际上REGEXP_SUBSTR在这里可能会更有用:

SELECT
    REGEXP_SUBSTR(text, '\d+', 1, 1) AS "from",
    REGEXP_SUBSTR(text, '\d+', 1, 2) AS "to"
FROM mytable;

Demo

注意:FROM是Oracle / SQL的保留关键字,您不应将其用于表名和列名。我在这里还了解到TO似乎也是一个保留关键字。我必须将两个别名都放在双引号中才能运行演示。

答案 1 :(得分:0)

在您的情况下,您需要一个介于set()<之间的数字。

您可以使用以下>来获取REGEXP_SUBSTR<之间的数字,而忽略所有其他数字(示例2,输入字符串中的其他数字):

>

db<>fiddle demo

干杯!