嗨,我有这些设置 $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
有什么帮助吗???
您似乎想以考虑数字排序的方式对字母数字值进行排序。实现此目的的一种方法是结合使用字符串操作和转换。但是,请注意,此解决方案可能不是最佳的,特别是如果您有大型数据集。您可以尝试以下查询以获得所需的结果:
SELECT * FROM stock
ORDER BY
LEFT(numbser, 2),
CAST(SUBSTRING(numbser, 4) AS UNSIGNED);
这里,
LEFT(numbser, 2)
用于根据前两个字符对值进行排序,CAST(SUBSTRING(numbser, 4) AS UNSIGNED)
用于提取数字部分并将其转换为整数进行数字排序。此查询假设您的数据遵循以下模式:前两个字符是字母字符,其余字符是数字。
这应该可以帮助您实现所需的结果,其中字母数字值按照您指定的方式排序。