0%

MySQL 字符串排序

之前对于MySQL数据库的字符串排序没有深入了解,今天帮同事看这个问题,就深入的了解下。先看下数据库的表,我想查询字母倒序,字符串倒序的一个数据。

根据上面的要求,第一个版本的SQL是下面的样子

1
select level from test order by level desc limit 1

结果发现最后的数据是 B9。咦,这是什么问题,网上看了下,字符的排序规则是先对第一个字符串排序,再下一个字符串,就这样排序,所以就出现之前的问题。于是出现了第二个版本的SQL查询。

1
2
3
4
SELECT MID(level,2)
from test
order by left(level,1) DESC , CAST(MID(level,2) AS UNSIGNED) DESC
limit 1

从上面的SQL中可以看出,对于字符串的数字,可以使用CAST(MID(level,2) AS UNSIGNED)来转化。在网上查询资料的时候,也发现了下面两种查询

1
2
select * from table where 1  order by id+0 desc;  
select * from table where 1 order by id*1 desc;

数据库空格对字符串的查找的影响

MySQL 数据库对字符串影响,空格在字符串的前面和中间是会影响字符串,在字符串后面的空格,MySQL 会忽略。

总结

这次是一个日常总结。不过在查询资料的时候,和数据库的类型也有一定的关系。

客官,赏一杯coffee嘛~~~~