【发布时间】:2016-09-13 10:36:14
【问题描述】:
如果我有 4 个地址行如下:
1 West Road
65 Brown Street
800 Albian Road
Holland House
我想订购它们,但忽略前面的数字,因此它们将按以下顺序结束:
800 Albian Road
65 Brown Street
Holland House
1 West Road
这可能吗?
【问题讨论】:
-
如果您使用 mariadb,
SELECT * FROM address ORDER BY REGEX_REPLACE(line1, '/^[0-9]+/', '');可能是可能的。遗憾的是不在 MySQL 5.6 中:sqlfiddle.com/#!9/737629/3 -
没有那么简单。看看这个a forum 这不像是他们给出了答案
-
我建议现在用
alter table做一个丑陋的hack,添加列,并让其中的数据以PO Box 1919或Brown Street等非数字开头,然后从那里开始。您可以在触发器期间(触发器之前或之后)使用 mysql 函数进行插入或更新,以获取已清理的非数字开头部分。或者,也许您实际上可以将该函数使用嵌入到您的查询中,而不需要该列。所以我会为Function创作而摇摆
标签: mysql