人们使用不同的技巧来做到这一点。我搜索了一下,发现每个结果都遵循不同的技巧。看看他们:
- MySQL中的字母数字排序
- MySQL中的自然排序
- 数字值与字母数字值混合排序
- MySQL自然排序
- MySQL中的自然排序
编辑:
我刚刚为以后的访问者添加了每个链接的代码。
MySQL中的字母数字排序
给定输入
1A 1a 10A 9B 21C 1C 1D
预期产量
1A 1C 1D 1a 9B 10A 21C
询问
Bin Way===================================SELECt tbl_column, BIn(tbl_column) AS binray_not_needed_columnFROM db_tableORDER BY binray_not_needed_column ASC , tbl_column ASC-----------------------Cast Way===================================SELECt tbl_column, CAST(tbl_column as SIGNED) AS casted_columnFROM db_tableORDER BY casted_column ASC , tbl_column ASC
MySQL中的自然排序
给定输入
表:sorting_test -------------------------- -------------| 字母数字VARCHAR(75)| 整数INT | -------------------------- -------------| test1 | 1 || test12 | 2 || test13 | 3 || test2 | 4 || test3 | 5 | -------------------------- -------------
预期产量
-------------------------- -------------| alphanumeric VARCHAr(75) | integer INT | -------------------------- -------------| test1 | 1|| test2 | 4|| test3 | 5|| test12 | 2|| test13 | 3| -------------------------- -------------
询问
SELECt alphanumeric, integer FROM sorting_test ORDER BY LENGTH(alphanumeric), alphanumeric
数字值与字母数字值混合排序
给定输入
2a, 12, 5b, 5a, 10, 11, 1, 4b
预期产量
1, 2a, 4b, 5a, 5b, 10, 11, 12
询问
SELECt versionFROM version_sortingORDER BY CAST(version AS UNSIGNED), version;
希望这可以帮助



