之前对于MySQL数据库的字符串排序没有深入了解,今天帮同事看这个问题,就深入的了解下。先看下数据库的表,我想查询字母倒序,字符串倒序的一个数据。
根据上面的要求,第一个版本的SQL是下面的样子
1 | select level from test order by level desc limit 1 |
结果发现最后的数据是 B9。咦,这是什么问题,网上看了下,字符的排序规则是先对第一个字符串排序,再下一个字符串,就这样排序,所以就出现之前的问题。于是出现了第二个版本的SQL查询。
1 | SELECT MID(level,2) |
从上面的SQL中可以看出,对于字符串的数字,可以使用CAST(MID(level,2) AS UNSIGNED)
来转化。在网上查询资料的时候,也发现了下面两种查询
1 | select * from table where 1 order by id+0 desc; |
数据库空格对字符串的查找的影响
MySQL 数据库对字符串影响,空格在字符串的前面和中间是会影响字符串,在字符串后面的空格,MySQL 会忽略。
总结
这次是一个日常总结。不过在查询资料的时候,和数据库的类型也有一定的关系。