mysql:如何从streetaddress列中删除街道号码?

时间:2010-01-13 11:48:31

标签: mysql street-address

我有一个名为streetaddress的列包含

<Street Number> <Street Name>

例如:

15 rue Gontier-Patin
4968 Hillcrest Circle

我怎么能完全从sql中删除行开头的数字?

4 个答案:

答案 0 :(得分:6)

这样的事情怎么样 - 修剪所有内容,包括以数字开头的字符串中的第一个空格

UPDATE mytable 
SET addresscol=SUBSTRING(addresscol, LOCATE(' ', addresscol)+1)
WHERE addresscol REGEXP '^[0-9]';

答案 1 :(得分:1)

这是基于上面的@Paul Dixon,但仅用于返回结果而不更新排序等数据:

SELECT IF(address REGEXP '^[0-9]', SUBSTRING(address, LOCATE(' ', address)+1), address) AS addrSort FROM table;

答案 2 :(得分:0)

MySQL没有regexp替换函数,因此它取决于列中的值。如果字符串总是以数字开头,然后是空格,你可以使用SQl查询Paul Dixon发布(doh,他比我快:D)。

如果需要正则表达式来解决它,则必须在数据库外部的应用程序代码中执行此操作。

答案 3 :(得分:0)

我认为这应该是基于每个条目的街道地址与房屋号码分隔一个空格(“”);

UPDATE table
SET streetaddress = MID(streetaddress, LOCATE(' ', streetaddress) + 1);

我已经对此进行了测试,效果很好。

如果您想将门牌号提取到更新前的新列,也可以使用以下内容;

UPDATE table
SET housenumber = MID(streetaddress, 1, LOCATE(' ', streetaddress) - 1);