我的问题是,MySQL 在数字之前排序字符。举一个简单的例子,我们在数据库中有这个字符串:
3, a, 2, 1, b
ORDER BY 语句将返回:
a, b, 1, 2, 3
但我希望它是:
1, 2, 3, a, b
我的数据库是utf8_unicode_ci
,但这无济于事。它仍然会产生错误的结果。(我不能只检查它们是否是数字然后将它们排序到顶部,因为一个项目也可以命名为“2something”并且必须在“asomething”之前)。有任何想法吗?
编辑:我发现了问题。在数据库(存储用户)中,我按 排序CONCAT(name, login)
,名称为NULL
。MySQL 命令NULL
总是在顶部,所以字符在数字的顶部(它们的名称字段是一个空字符串)。