我最近的任务是根据特定字符串对列进行排序。下面是我的表格的截图:
如何按以下顺序对图片列进行排序:
2017/June/06/169799_1_kYFJf.jpg
2017/February/18/169799_2_rkJ2d.jpg
2017/January/12/169799_3_23wKj.jpg
2017/March/18/169799_4_iMbw7.jpg
2017/May/18/169799_5_HwDBf.jpg
我试过 ORDER BY picture DESC
但没有成功。
不幸的是,我不允许添加新列,例如“排序”列,这将定义图像的排序编号。
最佳答案
试试这个:
SELECT *
FROM test
ORDER BY SUBSTRING(picture, LOCATE(pid, picture) + LENGTH(pid) + 1, 1) DESC
fiddle :http://sqlfiddle.com/#!9/7a334c/3
它是 MySQL 可用的各种字符串函数的组合
对于 SUBSTRING 函数,它需要您想要获取其子串的字符串、起始位置以及您想要提取的子串的长度。
那么让我们分解一下我们用于 SUBSTRING 函数的三个参数
1.) 图片 - 我们需要从中提取数字的列
2.) LOCATE(pid, picture) + LENGTH(pid) + 1 - 我们从图片列中定位包含 pid 子字符串的字符串,然后加上 pid 本身的长度,这样我们就得到了“下划线”字符,然后再次加1得到排序的“数字”..这将返回数字在pid和“下划线”字符之后的位置
3.) 1 - 这表示您需要从字符串中“剪切”或“提取”的长度,如果您有 2 位数字要提取,这将造成问题...但是现在,我们可以使用这..
http://www.w3resource.com/mysql/string-functions/mysql-substring-function.php
关于mysql - SQL 按列中的特定字符串排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44380914/