- 今天在写一个很简单的添加之后自动排序的小功能遇到了一个小问题,写下记录顺便提供给大家参考。
- 由于数据库不是本人设计的,也没太仔细了解字段类型,写出sql查询如下图

很明显,我写的sql是希望按照这三个字段进行升序排列,查看之后发现scene_no是varchar类型,第一次遇到这个问题我很不解,就算是字符串类型为什么要分开排序呢?这样不就等于把“10”分成“1”、“0”进行排序的吗,wtk!?这么神奇吗?百度了一下字符串类型是如何进行排序的,看了一些答案自己尝试了一下果然OK!
因为mysql进行的排序规则是按照ASCII码进行排序的,并不会自动的识别出这些数据是数值,sql改为
order by 字段名称+0 desc/asc的形式进行排序 即可。这样mysql会将数值字符串类型的数据当作数值进行处理,但是存在效率问题,不推荐使用varchar/char类型来存储数值,这样会带来不不必要的问题,仅供大家参考!下图是修改过的排序

本文分享了一次在MySQL中处理字符串类型数据排序的实战经验,针对varchar类型字段无法按数值正常排序的问题,提供了通过字段名+0进行强制类型转换的解决方案,避免了因字段类型不当引发的排序错误。


被折叠的 条评论
为什么被折叠?



