网站首页 > 教程分享 正文
SQL的ORDER BY是我们最常用的了,但是对中文进行ORDER BY的时候总能带给我们意想不到的...“意外”。
比如我有部门名称分别为“业务一部、业务二部、业务三部、业务四部、业务五部”的这么5个部门,按照我们的期望,如果按部门名称ORDER BY的话,查询出来的顺序就应该是从一到五这样顺序显示的,可是MySQL中实际上确是如下图这样的结果:
关键是你还不知道他究竟是以什么样的方式进行排序的,以拼音?看起来在MySQL中压根和拼音也没有什么关系嘛!但是在SQLServer中确实是以拼音进行排序的。
SQLServer中确实看起来是以拼音进行排序的。业务二(E)部、业务三(SAN)部、业务四(SI)部、业务五(W)部、业务一(Y)部。
所以面对如此需求,怎么处理的?有些朋友引入了各种各样针对这种带“一,二,三,四,五”的排序方法(当然是以丢失了扩展性,灵活性为代价了),他们这种方法对应硬编码的系统是可以的,对于我们这种基于低代码开发的系统却无能为力了,因为我们面对的都是未知的需求。当然了,如果啥都要写SQL的话那确实、应该、也许、或者可以吧?
所以我们的建议是什么呢?如果面对这种需求,那就增加一个数字类型的“显示顺序”字段(基于低代码增加这样的字段就几秒钟的事情),比如我们增加了显示顺序后,就可以获得我们需要的结果了。
也许会有人觉得这种方法复杂,录入数据的时候还要填写“显示顺序”,我们的低代码支持整数控件自增的。
但是如果遇到按多个中文字段排序,我们其实也只能是保证相对有序。
比多个排序的中文字段中都包含“一,二,三”这样的中文数值的时候,不可能每个字段都增加一个“显示顺序”,那就只能优先保证主顺序有序。
猜你喜欢
- 2025-04-27 mysql 出现 SQL错误(1055)GROUP BY错误如何处理?
- 2025-04-27 Clickhouse表引擎探究-ReplacingMergeTree
- 2025-04-27 SQL轻松入门(5):窗口函数
- 2025-04-27 TortoiseORM-order_by排序
- 2025-04-27 小心避坑:MySQL分页时使用 limit+order by 会出现数据重复问题
- 2025-04-27 一条order by rand的SQL为什么能打爆服务器磁盘?
- 2025-04-27 MySQL中Order By与Limit不要一起用
- 2025-04-27 ClickHouse学习笔记十二之PARTITION BY和ORDER BY
- 2025-04-27 mysql,order by和limit,你确定会用了吗
- 2025-04-27 21《MySQL 教程》ORDER BY 排序
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)