我有一张名为" test"它有一个名为" custom_id"的列,它可以是字母和整数的混合。我想要MySQL查询首先根据整数对其进行排序,然后根据字符串中的字母表进行排序。即:
Input:
1b
1a
Apple5
Apple1
Bapple2
Bapple5
2a
3
Output (in ASC):
1a
1b
Apple1
2a
Bapple2
3
Apple5
Bapple5
以上与自然排序略有不同,因为它不会根据字符串的长度进行排序。我有以下查询在MariaDB中工作,但我正在寻找MySQL解决方案(请不要执行任何程序):
SELECT custom_id FROM test
ORDER BY CAST(REGEXP_SUBSTR(custom_id,'[0-9]+') AS UNSIGNED) ASC, custom_id ASC
答案 0 :(得分:0)
0+custom_id
会给出前导数字的值。如果没有前导零,那么LENGTH(0+custom_id)
会说要剥离多少。使用合适的MID(...)
来获取许多后的字符。