MySQL-按字母顺序对数字进行排序

罗纳德:

我需要对字母进行排序,但要对数字进行排序,但随后又要对字母进行排序?

如果我这样做

ORDER BY name ASC

我明白了...

2d this 10
2d this 9
this item

但是我想要这个

2d this 9
2d this 10
this item

到目前为止,我已经做到了...

ORDER BY CAST(name AS UNSIGNED) ASC

这给了我这个...

this item
2d this 9
2d this 10

因此它的d1 this 9d1 this 10正确的,但我需要this item在最后。

我一直保持这种方式,然后在遍历结果时进行检查this item,存储并在循环结束后将其添加到结果中,但是在SQL查询中有没有办法做到这一点呢?

戈登·利诺夫(Gordon Linoff):

您可以替换字符串末尾的数字,并将其用作第一个键order by

order by regexp_replace(name, '[0-9]*$', ''),
         length(name),
         name

在早期版本的MySQL中,您可以更轻松地删除最后的数字:

order by (case when name regexp ' [0-9]+$'
               then left(name, length(name) - instr(reverse(name), ' '))
               else name
          end),
         length(name),
         name

是db <>小提琴。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MySQL-如何按名称排序,然后按字母数字顺序在表上排序?

用数字按字母顺序对数组进行排序

按字母顺序对MYSQL结果进行升序排序,但不对'The'进行T排序?

MySQL连接表并按计数和字母顺序对数据进行排序

MySQL组按字母顺序排序

MySQL用前缀对数字进行排序

MYSQL按非字母数字排序

按数字顺序用MySql排序

如何在C ++中从对数字进行排序到按字母顺序进行排序

MYSQL:选择按字母顺序排序的父级与按字母顺序排序的子级

在 linux 中按字母数字顺序对数字进行优先排序

按字母顺序对数据表进行字母排序,然后按R中的数字值排序

如何通过删除名称开头的数字按字母顺序对数据进行排序

当某些值有点时,如何按字母数字顺序对数组进行排序?

MySQL列顺序按字母数字忽略最高值

为什么mysql按字母数字顺序不起作用

按MySQL选择的规则对数组进行排序

MySQL按OR顺序排序

MYSQL 按顺序排序

MySQL:按照一定的字母顺序对查询进行排序

根据搜索输入按字母顺序对数组进行排序

按字母顺序对数组进行排序:Coffeescript

按varchar字母顺序对数据进行排序

Numpy Python:按字母顺序对数组的列进行排序

使用sort方法按字母顺序对数组进行排序

Javascript按日期和字母顺序对数组进行排序

按字母顺序对数组列表进行排序

无法按字母顺序对数组进行排序

在 MySQL 中按数字与字母和空白值排序