以下划线作为最高排序优先级的order by

ufj5ltwl  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(338)

我从数据库中提取了大量数据,为了不必将其重新分配给特定的变量,我想按字母顺序对这两个变量进行排序。问题是,对目标变量进行排序时,下划线排在前面,其他字母排在后面。sql返回的结果正好相反。
例子:
目标:
版本
调整日期
adj\ U dt\ U变速器
当前回报:
调整日期
adj\ U dt\ U变速器
版本
我已经找到了将定义的条件提升到最顶端的解决方案,但我真的不知道如何解决这个问题。

brccelvz

brccelvz1#

您可以使用:

order by replace(col, '_', ' ')

所有字母前面都是空格,所以这似乎是你想要的。

e0bqpujr

e0bqpujr2#

简单的回答是,您可能希望使用replace()函数,并将这些替换为排序在字母之前的字符。
但是,有一点复杂:您的数据有多大,以及排序对代码的完整性如何?我这样问的原因是因为这样做会使该列上的任何索引都变得无用(因为索引的顺序不是您想要的)
看看“生成的列”(https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html)-您可能需要将“generated”列添加到表中,然后在其上创建索引。

相关问题