我最近有一个数据库表更改,它在一列中分组了三个表值。新列保存3个值并用〜
分隔它们(例如,Col名称:OL_From值:2~7548~186)
我的旧查询使用第二个值作为左连接的索引,但现在我需要解析该值并将其作为左连接的值提供。
旧查询看起来像
在sr.from_run_id = r2.run_id
上左连接运行r2然而现在“from_run_id”字段不再存在,因为它是上例的第二个值(例如.2~ 7548 ~186)
用string_split分割字符串似乎很容易,但我如何检索我的第二个值并将其提供给连接。
感谢您的时间。
答案 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]
。
<强>输出强>