mysql 对包含字母数字的字符串进行排序

问题描述 投票:0回答:1

嗨,我有这些设置 $numbser (varchar) CA 0000002 CA 0000001 CA 10000000 CA 1111111 加利福尼亚州 2222222 CA 20000000 CB 0000001 CB 0000002 CB 1111111

当我使用 order by numser 时,我得到了这些。

SELECT * FROM stock ORDER BY numbser;
CA 0000001 CA 0000002 CA 10000000 CA 1111111 CA 20000000 加利福尼亚州 2222222 CB 0000001 CB 0000002 CB 1111111

我怎样才能得到这样的结果???

CA 0000001 CA 0000002 CA 1111111 加利福尼亚州 2222222 CA 10000000 CA 20000000 CB 0000001 CB 0000002 CB 1111111

有什么帮助吗???

php mysql sql-order-by
1个回答
0
投票

您似乎想以考虑数字排序的方式对字母数字值进行排序。实现此目的的一种方法是结合使用字符串操作和转换。但是,请注意,此解决方案可能不是最佳的,特别是如果您有大型数据集。您可以尝试以下查询以获得所需的结果:

SELECT * FROM stock
ORDER BY 
    LEFT(numbser, 2), 
    CAST(SUBSTRING(numbser, 4) AS UNSIGNED);

这里,

LEFT(numbser, 2)
用于根据前两个字符对值进行排序,
CAST(SUBSTRING(numbser, 4) AS UNSIGNED)
用于提取数字部分并将其转换为整数进行数字排序。此查询假设您的数据遵循以下模式:前两个字符是字母字符,其余字符是数字。

这应该可以帮助您实现所需的结果,其中字母数字值按照您指定的方式排序。

© www.soinside.com 2019 - 2024. All rights reserved.