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

时间:2018-01-02 19:56:20

标签: regex string postgresql

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

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

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

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

select foo from regexp_split_to_array(
(select param from log_table where id = 9088),  E'\\s+') as foo

2 个答案:

答案 0 :(得分:0)

使用substring拉出匹配组。

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

参考:PostgreSQL regular expression capture group in select

答案 1 :(得分:0)

您可以使用regexp_match()来获得该结果。

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

DBFiddle