mysql自然排序

标签 mysql sorting

我有以下格式的示例编号:

1.1
1.1.4
1.1.5
2.1
2.1.10
2.1.23
3.1a
3.1b
4.1.5
4.2.6
4.7.12

如何在 MySQL 中对其进行排序?我可以从 $sort 命令行选项轻松做到这一点,但在 MySQL 中似乎没有任何作用

最佳答案

如果您将字符串分成多个部分并按每个相关部分排序,它可能会起作用。

SELECT data
FROM example
ORDER BY
    CAST(SUBSTRING_INDEX(data, '.', 1) AS BINARY) ASC,
    CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data , '.', 2), '.', -1) AS BINARY) ASC,
    CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(data , '.', -1), '.', 1) AS BINARY) ASC;

不能说我支持在 MySQL 中做类似的事情,但我想它会让你到达你需要的地方,至少对于我的测试数据。请记住,如果更改字符串中的元素数量,则需要编辑数字。

关于mysql自然排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6729441/

相关文章:

PHP修复数组中的数字键

mysql - 定制的客户网格导致 MySQL 表扫描和文件排序也就是性能下降

php - 使用数据库(mysql,php)的住宅系统中的责任(禁用天数)

mysql - 如何选择带有计数的 1 列的多列

python - 重新排列点列表以达到它们之间的最短距离

java - Java 中有一个数组列表;如何按每个数组的最后一个元素排序?

mysql - 按同一表的前一个和下一个 fk 的两列对 MySql 查询进行排序

python - 如何根据依赖排序?

php - 数据库图库数组

php - MySQL PDO 连接 php