最近遇到了一个问题需要用sql对数据进行排序但是排序的字段是中文+数字的形式存储的
示例: 班级名称+班级序列号
自动化 202
最初的想法是将数字切割出来进行排序,但是发现在sql中很难切割(主要是数字出现的位置问题),后来我在想是不是需要单独添加一个能够直接排序的字段,询问我的老师后发现,他的想法居然是直接使用 中文+数字的形式排序,这种想法让我很吃惊,后来尝试发现这样居然能够排序出来,
我想问一下在mysql 中 中文+数字为啥能够排序成功,mysql是按照什么样的排序规则去处理(中文+数字),这种是特例还是普遍适用的呢?请帮我解答一下
本身就是根据字符来排序,但是这样有一些问题。
比如
select '自动化 202' < '自动化 23'
这条语句将会返回 1 即表示成立。直觉是 202 怎么可能小于 23 ?实际上,他是按照字符来比较的,也就是比较到
自动化 20
和自动化 23
时,这时候就已经有结果了(3 > 0
)。还有比如
select '自动化202' > '自动化 202';
这条语句会返回 1 也就是成立,因为 2 和空格相比,2 更大。如果你的数据是完全规范的,可以使用这个方式。