mysql - SQL 按列中的特定字符串排序

标签 mysql sql

我最近的任务是根据特定字符串对列进行排序。下面是我的表格的截图:

enter image description here

如何按以下顺序对图片列进行排序:

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/

相关文章:

php - 如何在 1 个查询中执行?

jquery - 使用 Ajax Json 选择查询 php 给出错误

mysql - 为什么IX锁与InnoDB中的另一个IX锁兼容?

sql - sql中如何创建INNER JOIN多个表

mysql - 简单的 MySQL if 查询语法

mysql - 了解一对多或多对多的使用

MySQL lite django 多表

mysql - 如何使现有列中的重复项唯一?

sql - 如何找到购买产品 A 和 D 的客户间隔 > 6 个月?

python - 根据缺失时间范围自动填充数据库中缺失的行