Postgresql查询使用正则表达式更新字段

Huu*_*uze 9 regex sql postgresql

我的"Street_Address_1"列中包含以下数据:

123 Main Street

使用Postgresql,我如何编写查询来更新地址表中的"Street_Name"列?换句话说,"Street_Name"为空,我想用"Street_Address_1"列中包含的街道名称值填充它.

据我所知,我想使用"regexp_matches"字符串方法.不幸的是,我运气不好.

注意:您可以假设所有地址都采用"StreetNumber StreetName StreetType"格式.

Ale*_*lli 14

就像是...:

UPDATE table
SET Street_Name = substring(Street_Address_1 FROM '^[0-9]+ ([a-zAZ]+) ')
Run Code Online (Sandbox Code Playgroud)

从PGSQL 8.3.7文档相关章节中,substring形式节开始后不久详尽.


Mat*_*ood 14

如果您只想获取Street_Address_1并删除任何前导数字,则可以执行以下操作:

UPDATE table
SET street_name = regexp_replace(street_address_1, '^[0-9]* ','','');
Run Code Online (Sandbox Code Playgroud)

这将获取street_address_1中的值,并使用空字符串替换任何前导数字字符串(加上单个空格)(第四个参数用于可选的正则表达式标志,如"g"(全局)和"i"(不区分大小写)).

这个版本允许像"1212 15th Street"这样的东西正常工作.