我有一个名为 streetaddress 的列,其中包含
<Street Number> <Street Name>
例如:
15 rue Gontier-Patin
4968 Hillcrest Circle
我怎样才能完全在sql中删除行首的数字?
我有一个名为 streetaddress 的列,其中包含
<Street Number> <Street Name>
例如:
15 rue Gontier-Patin
4968 Hillcrest Circle
我怎样才能完全在sql中删除行首的数字?
像这样的东西怎么样 - 修剪所有内容,包括以数字开头的字符串中的第一个空格
UPDATE mytable
SET addresscol=SUBSTRING(addresscol, LOCATE(' ', addresscol)+1)
WHERE addresscol REGEXP '^[0-9]';
这基于上面的@Paul Dixon,但仅用于返回结果而不更新数据以进行排序等操作:
SELECT IF(address REGEXP '^[0-9]', SUBSTRING(address, LOCATE(' ', address)+1), address) AS addrSort FROM table;
MySQL 没有正则表达式替换函数,因此它取决于列中的值。如果字符串总是以数字开头,然后是空格,您可以使用 Paul Dixon 发布的 SQl 查询来完成(doh,他比我快 :D)。
如果你需要正则表达式来解决它,你必须在数据库之外的应用程序代码中进行。
我认为这应该在每个条目的街道地址与门牌号之间用空格(“”)隔开的基础上完成这项工作;
UPDATE table
SET streetaddress = MID(streetaddress, LOCATE(' ', streetaddress) + 1);
我已经对此进行了测试,并且效果很好。
如果您想将门牌号提取到更新之前的新列中,也可以使用以下内容;
UPDATE table
SET housenumber = MID(streetaddress, 1, LOCATE(' ', streetaddress) - 1);