我有一个名为streetaddress的列包含
<Street Number> <Street Name>
例如:
15 rue Gontier-Patin
4968 Hillcrest Circle
我怎么能完全从sql中删除行开头的数字?
答案 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);