所以我在PostgreSQL中有下表。
这是一个测试表,只有一列route
具有路径名值,如
I-95
US-95N
I-95 S
我想从所有路径名中删除尾随方向文字。
UPDATE <schema>.<table>
SET route= regexp_replace(route, '%[:digit:](S|N|E|W)', '%[:digit:]', 'ig');
记录没有变化。任何人都知道我在这里做错了什么?
答案 0 :(得分:0)
在数字后立即删除任何表示主要方向的单个字母:
UPDATE tbl
SET route = regexp_replace(route, '(\d)[SNEW]', '\1', 'ig')
积极的后视匹配会更加优雅,但遗憾的是只有lookahead matches被实现。所以我使用back-reference重新插入匹配中的第一个(捕获的)部分。
bracket expression [SNEW]
比多个分支 更简单,在这种情况下需要non-capturing parentheses:{{1 }} (S|N|E|W)