我从数据库中提取了大量数据,为了不必将其重新分配给特定的变量,我想按字母顺序对这两个变量进行排序。问题是,对目标变量进行排序时,下划线排在前面,其他字母排在后面。sql返回的结果正好相反。例子:目标:版本调整日期adj\ U dt\ U变速器当前回报:调整日期adj\ U dt\ U变速器版本我已经找到了将定义的条件提升到最顶端的解决方案,但我真的不知道如何解决这个问题。
brccelvz1#
您可以使用:
order by replace(col, '_', ' ')
所有字母前面都是空格,所以这似乎是你想要的。
e0bqpujr2#
简单的回答是,您可能希望使用replace()函数,并将这些替换为排序在字母之前的字符。但是,有一点复杂:您的数据有多大,以及排序对代码的完整性如何?我这样问的原因是因为这样做会使该列上的任何索引都变得无用(因为索引的顺序不是您想要的)看看“生成的列”(https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html)-您可能需要将“generated”列添加到表中,然后在其上创建索引。
2条答案
按热度按时间brccelvz1#
您可以使用:
所有字母前面都是空格,所以这似乎是你想要的。
e0bqpujr2#
简单的回答是,您可能希望使用replace()函数,并将这些替换为排序在字母之前的字符。
但是,有一点复杂:您的数据有多大,以及排序对代码的完整性如何?我这样问的原因是因为这样做会使该列上的任何索引都变得无用(因为索引的顺序不是您想要的)
看看“生成的列”(https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html)-您可能需要将“generated”列添加到表中,然后在其上创建索引。