提问人:TheoB 提问时间:11/17/2023 最后编辑:Jonas MetzlerTheoB 更新时间:11/18/2023 访问量:58
在 MYSQL 查询中对 alphanum 列进行排序?
Sort an alphanum column in MYSQL query?
问:
我想按以下顺序显示我的表格行,并按以下顺序排列:
50ACT-1
50ACT-1A1
50ACT-1A5
50ACT-1A10
50ACT-2
除了目前,在我的查询中,我的行按以下顺序显示:
50ACT-1
50ACT-1A1
50ACT-1A10
50ACT-1A5
50ACT-2
论坛上有几篇关于这个主题的帖子,但我还没有找到我的答案...... 你对我可以把什么放在订单中有什么想法吗? 提前致谢
答:
0赞
Ajax1234
11/18/2023
#1
一个彻底的排序过程可以利用regexp_substr
来找到每个字符串的两个目标数字分量,然后它们可以作为子句中的整数:cast
order by
select t.s from tbl t order by
cast(regexp_substr(t.s, '^\d+') as float), -- first, by leading number
cast(regexp_substr(t.s, '(?<=\-)\d+') as float), -- then, by number just after the dash
cast(regexp_substr(t.s, '\d+$') as float) -- lastly, by trailing number (if it exists)
评论
ORDER BY LEFT(col,7), LENGTH(col), col
50ACT-1B2
50ACT-1A5
50ACT-1A10
6ACT-123B12
100ACT-15A8