我的“Street_Address_1”列中有以下数据:
123 Main Street
使用Postgresql,如何编写查询语句来更新我的地址表中的“Street_Name”列?换句话说,“Street_Name”为空,我想用包含在“Street_Address_1”列中的街道名称填充它。
据我所知,我想使用“regexp_matches”字符串方法。不幸的是,我没有太多的运气。
注意:您可以假设所有地址都采用“街道号码 街道名称 街道类型”的格式。
我的“Street_Address_1”列中有以下数据:
123 Main Street
使用Postgresql,如何编写查询语句来更新我的地址表中的“Street_Name”列?换句话说,“Street_Name”为空,我想用包含在“Street_Address_1”列中的街道名称填充它。
据我所知,我想使用“regexp_matches”字符串方法。不幸的是,我没有太多的运气。
注意:您可以假设所有地址都采用“街道号码 街道名称 街道类型”的格式。
如果您只想获取Street_Address_1并删除所有前导数字,可以执行以下操作:
UPDATE table
SET street_name = regexp_replace(street_address_1, '^[0-9]* ','','');
这段代码获取了变量street_address_1的值,并将其前面的所有数字(包括一个空格)替换为空字符串,第四个参数是用于可选的正则表达式标志,如“g”(全局匹配)和“i”(不区分大小写)。
这个版本允许像“1212 15th Street”这样的地址正常工作。
类似于...的东西:
UPDATE table
SET Street_Name = substring(Street_Address_1 FROM '^[0-9]+ ([a-zAZ]+) ')
请参见PGSQL 8.3.7文档中相关章节,在该章节开始不久后就详细介绍了substring
函数的形式。