【问题标题】:MySQL - Sort asc with text in the begginig [duplicate]MySQL - 在开头使用文本按 asc 排序 [重复]
【发布时间】:2013-06-12 02:48:24
【问题描述】:

我有一个带有“地址”字段的 MySQL 表,地址格式为:

StreetName 1
StreetName 10
StreetName 34
Streetname 8

如何创建一个 MySQL 查询:

StreetName 1
Streetname 8
StreetName 10
StreetName 34

简单的“按地址排序”在这种情况下不起作用,因为“StreetName 8”在“StreetName 34”之后。

【问题讨论】:

    标签: mysql sorting


    【解决方案1】:

    如果街道名称没有任何空格,这应该可以工作

    SELECT * FROM table
    ORDER BY CAST(SUBSTRING(address,LOCATE(' ',address)+1) AS UNSIGNED)
    

    更新:如果街道名称有空格,但数字总是在末尾有一个空格,例如。 S Av 2, N Pike Street 5 等,你可以试试这个..

    SELECT * FROM table
    ORDER BY CAST(SUBSTRING_INDEX(address,' ', -1) AS UNSIGNED)
    

    我还假设街道号码是无符号的(不是负数)。给你一个fiddle..

    【讨论】:

    • 但它有空格,所以这个解决方案不好:(
    • @user2296998- 我已经更新了我的答案。
    • 谢谢,但它不起作用。是否有可能创建新列,其中只有街道号码,而另一个没有街道号码?然后我可以先按街道名称排序,然后按街道编号按简单的“按'streetname' asc、'streetnumber'、asc排序
    • 我可以知道为什么它不起作用吗?
    • 地址栏只显示街道名称没有数字,排序也很奇怪,没有任何规则
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2014-11-22
    • 2015-04-12
    • 2021-10-01
    • 2017-10-27
    • 1970-01-01
    相关资源
    最近更新 更多