在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