有没有一种方法可以使用 SQL 按列中出现的第一组数字对列进行排序?
例如,该列包含如下值:
PPP-26-8
PPP-29-8
PPP-216-8
PPP-220
PPP-236
只有第一组数字被考虑以递增的数字顺序排序,即 26, 29, 216, 220, 236
我目前有这样的东西,哪种有效,但给我警告:
CAST(RIGHT(model, LENGTH(model) - 4) as UNSIGNED) ASC
警告,具体是这样的:
Warning | 1292 | Truncated incorrect INTEGER value: '216-8'
更新
看起来这样就可以了,其中 -
是分隔符:
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(model, '-', 2), '-', -1) as UNSIGNED) ASC
最佳答案
您可以使用字符串函数在 first 之后获取字符串 - 并使用 * 1 进行类型转换
select *
from demo
order by substring_index(substring_index(col,'-',2),'-',-1) * 1
关于mysql - 如何使用 SQL 按每行中出现的第一组数字对列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48012336/