SQL解析并检索值

时间:2018-04-04 15:22:48

标签: sql parsing

我最近有一个数据库表更改,它在一列中分组了三个表值。新列保存3个值并用〜

分隔它们

(例如,Col名称:OL_From值:2~7548~186)

我的旧查询使用第二个值作为左连接的索引,但现在我需要解析该值并将其作为左连接的值提供。

旧查询看起来像

在sr.from_run_id = r2.run_id

上左连接运行r2

然而现在“from_run_id”字段不再存在,因为它是上例的第二个值(例如.2~ 7548 ~186)

用string_split分割字符串似乎很容易,但我如何检索我的第二个值并将其提供给连接。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

只需创建一个封装解析的函数并执行

 ON getIdFromField(sr.from_run_id) = r2.run_id

例如,在postgresql中,您可以使用regexp_split_to_array

<强> SQL DEMO

WITH start_string as (
    SELECT '2~7548~186'::text as value

)   
select a[1], a[2], a[3], a[4]
from (
    select regexp_split_to_array(value, '~')
    FROM start_string
) as dt(a)

并返回a[2]

<强>输出

enter image description here