duanqi6274 2015-02-09 15:58
浏览 37
已采纳

MySQL按行中数组的第一个元素排序

I have problem with ordering of my table by row with prices array. Below example rows:

1) ;100
2) ;50
3) ;50;100;300
4) ;30;150

I want to order by first element of array. When I order by price row ASC I get:

1) ;100
2) ;30;150
3) ;50
4) ;50;100;300

It is wrong result because "100" should be last... I tried:

ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(`price`, ';', 2), ';', 1) AS INT(3) ASC

But still wrong... Any clue?

  • 写回答

1条回答 默认 最新

  • dqyy38265 2015-02-09 16:35
    关注

    You are very close. If I were doing this I would use (http://sqlfiddle.com/#!2/f57af/6/0)

     ORDER BY 0+TRIM(LEADING ';' FROM price)
    

    This works by getting rid of any semicolon, then (via the 0+ trick) treating the initial characters of the price column as an integer, not as text.

    You could also do

    ORDER BY 0+SUBSTRING_INDEX(SUBSTRING_INDEX(val,';',2), ';', -1)
    

    or

    ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(val,';',2), ';', -1) AS INTEGER)
    

    You had two problems. First, your outer SUBSTRING_INDEX operation needed a third parameter of -1. Second, you cast as INTEGER, not INT(3).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题