我使用的是Postgres,服务器版本14.8,我想解析一个字符串,返回位于regexp字符串和分隔符之间的字符串。
通常在Java、Perl等语言中,我会使用反向引用来获取分隔符,但我不确定如何使用Postgres SQL。
下面是我使用函数regexp_split_to_table得到的结果:
正则表达式:'[(.+?)]'
select regexp_split_to_table('IF [Cost_1]=0 THEN ''[$0]'' ELSEIF [Cost_2]>0 AND [Cost_1]<=100 THEN ''[$1,$100]'' ELSE ''[$0]'' END', '\[(.+?)\]');
和输出:
regexp_split_to_table
-----------------------
IF
=0 THEN '
' ELSEIF
>0 AND
<=100 THEN '
' ELSE '
' END
(7 rows)
但我想要的是这样的东西,其中包括分隔符,交错:
regexp_split_to_table
-----------------------
IF
[Cost_1]
=0 THEN '
[$0]
' ELSEIF
[Cost_2]
>0 AND
[Cost_1]
<=100 THEN '
[$1,$100]
' ELSE '
[$0]
' END
(13 rows)
使用此函数或14.8中可用的任何其他Postgresql函数,我如何做到这一点?
谢谢安东尼
1条答案
按热度按时间wz1wpwve1#
看看这个链接,postgresql: regexp_split_to_table - how to split text by delimiters,这个变体工作: