使用regexp_replace函数最后5位数

时间:2012-05-09 08:07:55

标签: regex postgresql

我的列中的值如“07960 / WR”,“27163 / WR”等。我需要从中选择所有数字。所以我创建了sql:

  

选择CAST(regexp_replace(object_index,'\ D','','g')为整数)作为...的数字

没关系,但是当有人把[编号] /< - 斜杠/ .... 例如:“99/27163 / WR”

我的查询无效。

如何仅对regexp_replace使用值的最后5位数?

1 个答案:

答案 0 :(得分:1)

我不知道PostgreSQL,但是在RegexBuddy的帮助下,我拼凑了一些希望有效的东西:

select CAST (REGEXP_REPLACE(object_index, $$(?p)^.*(\d{5})\D*$$$, $$\1$$, 'g') as integer) as number from ...

这个正则表达式的想法是匹配并捕获字符串中的最后五位\d{5}(即那些仅由非数字跟随的数字:\D*$)并删除它们周围的所有内容。 / p>