1

我有一个名为 streetaddress 的列,其中包含

<Street Number> <Street Name>

例如:

15 rue Gontier-Patin
4968 Hillcrest Circle

我怎样才能完全在sql中删除行首的数字?

4

4 回答 4

7

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

UPDATE mytable 
SET addresscol=SUBSTRING(addresscol, LOCATE(' ', addresscol)+1)
WHERE addresscol REGEXP '^[0-9]';
于 2010-01-13T12:00:28.263 回答
3

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

SELECT IF(address REGEXP '^[0-9]', SUBSTRING(address, LOCATE(' ', address)+1), address) AS addrSort FROM table;
于 2012-10-16T20:06:43.380 回答
0

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

如果你需要正则表达式来解决它,你必须在数据库之外的应用程序代码中进行。

于 2010-01-13T12:02:13.370 回答
0

我认为这应该在每个条目的街道地址与门牌号之间用空格(“”)隔开的基础上完成这项工作;

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

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

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

UPDATE table
SET housenumber = MID(streetaddress, 1, LOCATE(' ', streetaddress) - 1);
于 2010-01-13T12:15:16.470 回答