【问题标题】:php natural order sorting of mysql select rowsmysql选择行的php自然顺序排序
【发布时间】:2010-04-19 12:24:54
【问题描述】:

我正在运行一个返回字母数字结果的选择,例如:

ABC-1
ABC-2
ABC-10
SAM-1
SAM-2
SAM-10
SAM-20

我尝试过使用:

ORDER BY CAST(mid(field_name, 6, LENGTH(class) -5) AS unsigned)

ORDER BY filed_name + 0 ASC

这有助于下订单,但我似乎无法在 -10 之前下订单 -2

非常感谢

【问题讨论】:

    标签: php mysql natural-sort


    【解决方案1】:

    怎么样

    ORDER BY 
      LEFT(field_name, INSTR(field_name, '-') - 1),
      CAST(
        SUBSTRING(field_name, INSTR(field_name, '-') + 1) AS INTEGER
      )
    

    【讨论】:

    • @Digital Craft Studios:那会是……究竟是哪个错误?
    • 行:130 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 'CAST( RIGHT(class, LENGTH(class) - INSTR(class, '-')) AS INTEGER' 附近使用正确的语法
    • @Digital Craft Studios:您似乎没有注意到我的答案有所改变。请重试。
    • 很遗憾,我无法拥抱你!像魅力一样工作谢谢...您能否向我推荐任何可以教如何解决此类查询的资源?非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 2019-04-10
    • 2013-01-07
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多