有没有一种方法可以仅使用一个 regexp_replace 来简化此查询?
select regexp_replace(regexp_replace('BL 081', '([^0-9.])', '', 'g'), '(^0+)', '', 'g')
the result should be 81
我正在尝试从结果中删除所有非数字字符和前导 0
最佳答案
您可以通过捕获所需的数字(不包括任何前导零)并删除其他所有内容来做到这一点:
select regexp_replace('BL 0081', '.*?([1-9][0-9]*)$', '\1')
输出
81
请注意,您不需要 g
标志,因为您只需要替换一个。
关于regex - 如何简化 postgres regexp_replace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59524883/