mysql - 如何使用 SQL 按每行中出现的第一组数字对列进行排序?

标签 mysql sql sorting

有没有一种方法可以使用 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

demo

关于mysql - 如何使用 SQL 按每行中出现的第一组数字对列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48012336/

相关文章:

python - 根据python中单词中的元音数量对列表进行排序

php - 在评论中按日期排序

mongodb - 蒙哥 : sort documents by array of ids

mysql - 重复的列值 MySQL

php - 插入(连接两个表)到不同的表中

mysql类别树搜索

sql - 如何对四个表使用内连接查询

sql - 我如何在一个 SQL 语句中加入这个查询?

mysql - asp.net 可以做到这一点吗?

mysql - 只是想确认通过 IN 运行单个 mySQL UPDATE 是否比多个查询更快