我的列中的值如“07960 / WR”,“27163 / WR”等。我需要从中选择所有数字。所以我创建了sql:
选择CAST(regexp_replace(object_index,'\ D','','g')为整数)作为...的数字
没关系,但是当有人把[编号] /< - 斜杠/ .... 例如:“99/27163 / WR”
我的查询无效。
如何仅对regexp_replace使用值的最后5位数?
答案 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>