我想按下面显示的顺序对它们进行排序(数字1-12):
1个 2 3 4 5 6 7 8 9 10 11 12 但是,我的查询-使用order by xxxxx asc按其他所有字母开头的数字排序:
1个 10 11 12 2 3 4 5 6 7 8 9 有什么技巧可以使其更正确地排序吗?
此外,为了充分公开,这可以是字母和数字的混合(尽管现在不是),例如:
A1 534克 G46A 100B 100A 100JE 等等....
谢谢!
人们使用不同的技巧来做到这一点。我搜索了一下,发现每个结果都遵循不同的技巧。看看他们:
MySQL中的字母数字排序 MySQL中的自然排序 数字值与字母数字值混合排序 MySQL自然排序 MySQL中的自然排序 编辑:
我刚刚为以后的访问者添加了每个链接的代码。
MySQL中的字母数字排序
给定输入
1A 1a 10A 9B 21C 1C 1D 预期产量
1A 1C 1D 1a 9B 10A 21C 询问
SELECT tbl_column, BIN(tbl_column) AS binray_not_needed_column FROM db_table ORDER BY binray_not_needed_column ASC , tbl_column ASC
SELECT tbl_column, CAST(tbl_column as SIGNED) AS casted_column FROM db_table ORDER 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 version FROM version_sorting ORDER BY CAST(version AS UNSIGNED), version; 希望这可以帮助
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。