PostgreSQL - 使用正则表达式查找字符串

问题描述 投票:0回答:2

我想要做的是,在Postgres中,在列中搜索字符串(帐号)。我有一个日志表,它有一个参数列,从应用程序中获取参数。它是一段文本,列中存储的参数之一是帐号。

帐号的位置在文本中不一致,此表中的某些行在列中没有任何内容(因为在某些屏幕上没有传递参数)。帐号具有以下格式:L1234567899。因此,对于帐号,第一个字符是一个字母,然后是十个数字。

我正在寻找一种方法来从该列中单独提取帐号,以便我可以在报表的视图中使用它。

到目前为止,我所尝试的是将它变成一个数组,但由于位置发生变化,我不能指望它在同一个地方。

select foo from regexp_split_to_array(
(select param from log_table where id = 9088),  E'\\s+') as foo
regex string postgresql
2个回答
0
投票

使用substring拉出匹配组。

select substring ('column text' from '[A-Z]\d{10}')

参考:PostgreSQL regular expression capture group in select


0
投票

您可以使用regexp_match()来实现该结果。

(regexp_match(foo,'[A-Z][0-9]{10}'))[1]

DBFiddle

© www.soinside.com 2019 - 2024. All rights reserved.