SQL排序规则(Collation)决定字符比较和排序的底层逻辑,影响大小写、重音敏感性及中文排序方式,可在列级、表达式级、数据库级和服务器级设置,高优先级覆盖低优先级。

SQL排序规则(Collation)不是ORDER BY本身,而是决定“怎么比大小”的底层设定。它影响字符比较、排序顺序、是否区分大小写和重音——这些在你用ORDER BY时悄悄起作用,但很多人直到排序结果“不对劲”才意识到问题出在这儿。
它不控制你写不写DESC,也不决定先排哪个字段。它管的是:
排序规则可设在四个层级,优先级从高到低:
name VARCHAR(50) COLLATE Chinese_PRC_CI_AS
COLLATE关键字。例:ORDER BY username COLLATE SQL_Latin1_General_CP1_CI_AS
注意:高优先级会覆盖低优先级。比如某列设了CS(区分大小写),即使数据库是CI(不区分),该列仍按CS比对。
以Chinese_PRC_CI_AS为例拆解:
再比如SQL_Latin1_General_CP1_CI_AS,CP1代表代码页1252,适合西欧字符;而Latin1_General_100_CI_AS_SC_UTF8支持UTF-8且带补充字符(SC)支持。选错可能导致中文乱序、emoji无法比较等问题。
以下情况容易暴露排序规则问题:
查当前列的排序规则,可用:SELECT collation_name FROM sys.columns WHERE object_id = OBJECT_ID('表名') AND name = '列名';
基本上就这些。排序规则不是每次写ORDER BY都要调,但一旦遇上字符排序异常,它就是根因。理解它,比死记语法更能避开大坑。
以上就是SQL排序规则怎么设置_关键概念讲透让学习更加顺畅【技巧】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号