在postgresql中截断字符串的前导零

在postgresql中截断字符串的前导零,postgresql,Postgresql,我正试图从地址中截断前导零。例如: 输入 1 06TH ST 12 02ND AVE 123 001St CT 预期产量 1 6TH ST 12 2ND AVE 123 1St CT 以下是我所拥有的: update table set address = regexp_replace(address,'(0\d+(ST|ND|TH))','?????? need help here') where address ~ '\s0\d+(ST|ND|TH)\s'; 提前多谢假设地址总是有一些

我正试图从地址中截断前导零。例如:

输入

1 06TH ST
12 02ND AVE
123 001St CT
预期产量

1 6TH ST
12 2ND AVE
123 1St CT
以下是我所拥有的:

update table
set address = regexp_replace(address,'(0\d+(ST|ND|TH))','?????? need help here')
where address ~ '\s0\d+(ST|ND|TH)\s';

提前多谢

假设地址总是有一些数字/字母地址(1234、1a、33B),后跟1个或多个空格的序列,后跟要去除前导零的部分

select substr(address, 1, strpos(address, ' ')) || ltrim(substr(address, strpos(address, ' ')), ' 0') from table;
或者,要更新表,请执行以下操作:

update table set address = substr(address, 1, strpos(address, ' ')) || ltrim(substr(address, strpos(address, ' ')), ' 0');

-g

您要查找的是正则表达式中的:

UPDATE table
   SET address = regexp_replace(address, '\m0+(\d+\w+)', '\1', 'g')
 WHERE address ~ '\m0+(\d+\w+)'
此外:

  • \m
    用于匹配单词的开头(以避免替换内部单词(例如
    101Th
  • 0+
    截断所有零(不包括在捕获括号中)
  • \d+
    用于捕获剩余的数字
  • \w+
    用于捕获剩余的单词字符
  • 单词字符可以是任何字母数字字符,下划线
    \uuu

进行纠正!