【发布时间】:2021-05-02 11:35:58
【问题描述】:
select
trim(regexp_substr(t.column_A, '[^,]+', 1, levels.column_value)) as column_A
from (SELECT * FROM table_t t ) t,
table(cast(multiset(select level from dual
connect by level <= length (regexp_replace(t.column_A, '[^,]+')) + 1) as sys.OdciNumberList)) levels
无法在 postgresql 中找到按级别连接的替代方法。 在 postgresql 中也不存在对偶。
如果有人帮我确定上述查询的替代方案,那将是非常有帮助的。
【问题讨论】:
-
请提供示例数据、期望的结果以及您要实现的逻辑的说明。
-
如果不解释该代码的作用,这几乎是不可能回答的。您可能只想要
select * from table_t t cross join unnest(string_to_array(t.column_a, ',')) as x(column_a) -
独立于DBMS,
from (SELECT * FROM table_t t ) t部分可以简化为from table_t t -
postgres 等效项是递归 CTE。 (也应该在 Oracle 上工作)并且:您不需要
dual。
标签: sql postgresql split regexp-replace