我在从列中提取子字符串时遇到问题。
我需要提取一个数字,它介于两个字符串之间:<=>
和level[highlighted]
我使用了这样的东西:
split_part(SPLIT_PART(mycolumn, '<=>', 2), '<br>level[highlighted]', 1)
但是有一个问题,因为字符串<=>
在一行中包含多次(但字符串<br>level[highlighted]
在每行中只有一次(。
您可以使用正则表达式来匹配和提取数据:
波斯特格雷斯
with _t as (
select 'foo<=>bar<=>123<br>level[highlighted]'::text as col
)
select
substring(col, '<=>(d+)<br>level[highlighted]')
from
_t
;
其中(d+)
是(1 个或多个(数字的匹配组;结果将是:
substring
-----------
123
(1 row)
红移
使用regexp_substr()
也可以达到类似的结果。