gpt4 book ai didi

mysql排序顺序,需要稍微不同的结果

转载 作者:行者123 更新时间:2023-11-29 03:06:23 25 4
gpt4 key购买 nike

我有一个 varchar 列,我目前正在使用它进行排序:ORDER BY (col_name+0)

这一列既有数字也有非数字,排序后的结果是这样的:

D3
D111
M123-M124
M136
4
9
10
25
37b
132
147-149
168b
168ca

这种排序对于我们的应用程序来说几乎是完美的,但有一个异常(exception):我们希望以字母开头的项目显示在以数字开头的项目之后。这是理想的结果:

4
9
10
25
37b
132
147-149
168b
168ca
D3
D111
M123-M124
M136

我希望这可以在 select 语句中实现,而不是需要在 select 之后再次循环遍历代码中的所有内容。有什么想法吗?

最佳答案

你可以使用这个:

ORDER BY
col_name regexp "^[^0-9]",
case when col_name regexp "^[0-9]" then col_name + 0
else mid(col_name, 2, length(col_name )-1) + 0 end,
col_name

这会将以数字开头的行放在顶部。如果 col_name 以数字开头,我将按它的数值排序,如果不是,我将按从第二个字符开始的字符串的数值排序。

关于mysql排序顺序,需要稍微不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14486807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com