一.SQL Server 排序规则后缀含义

_BIN 指定使用向后兼容的二进制排序顺序。

_BIN2 指定使用 SQL Server 2005 中引入的码位比较语义的二进制排序顺序。

_Stroke 按笔划排序

_CI(CS) 是否区分大小写,CI不区分,CS区分(case-insensitive/case-sensitive)

_AI(AS) 是否区分重音,AI不区分,AS区分(accent-insensitive/accent-sensitive)

_KI(KS) 是否区分假名类型,KI不区分,KS区分(kanatype-insensitive/kanatype-sensitive)

_WI(WS) 是否区分全半角, WI不区分,WS区分(width-insensitive/width-sensitive)

二.SQL Server 排序规则层级

如下图:SQL Server 的排序规则在数据库中通过 服务器级,数据库级,列级,表达式级 三级进行管理。

三.排序规则如何选择

通常我们在安装SQL Server 数据库时一般不会特意指定Server级的排序规则,那么SQL Server 在安装的时候是根据系统区域设置自动生成的的默认排序规则。举例:在Windows server 系统区域设置为英语(美国)时,安装数据库,因为向后兼容性的原因,默认安装的排序规则为:SQL_Latin1_General_CP1_CI_AS。

但是还是强烈建议安装数据库时将数据库的排序规则改为:Latin1_General_100_CI_AS_SC。

这两个排序规则的区别在于:

1.Latin1_General_100_CI_AS_SC  排序规则更新了对最新版的Unicode 字符集的支持,因此可以处理一些新的Unicode字符。

举例:中文中的〇,Ǹ  等字符在SQL_Latin1_General_CP1_CI_AS 中是不存在,无法识别。

2.后缀SC:Unicode 联盟为每个字符分配一个唯一的代码点,该代码点的值在 000000–10FFFF 范围内,但最常用的字符具有 000000–00FFFF 范围内,因此不带SC后缀的只能指定在 000000–00FFFF 之间,为了解决这个问题,SQL Server 2012之后增加了一个SC后缀,以表示完整的 Unicode 字符范围(000000–10FFFF),避免遗漏。

四.如何修改排序规则

修改排序规则是一件相对麻烦的工作,一般上来讲不大建议修改排序规则,但如果真的需要,可以根据使用的具体场景一定要按照上文的排序规则层级由下到上来进行更改,更改时避免遗漏,可以借用一些SQL Server 自带的系统视图查找,并通过脚本循环逐一更改。

1.修改表达式排序规则

在SQL 查询时默认排序规则无法覆盖,可在SQL 查询表达式中指定排序规则进行转换查询。

2.修改列级排序规则

如果已知某一列中一定会有特殊字符,比如医院名称:(九四〇医院),也可以真针对存储有这一类数据的所有列更改排序规则;

如下实例:

ALTER TABLE [dbo].[DimEmployee]

ALTER COLUMN [EmailAddress] nvarchar(50)

COLLATE Latin1_General_100_CI_AS_SC;

注意

1.可以通过information_schema.COLUMNS 系统视图,从而方便查询和定位需要修改的字段,避免遗漏。

2.修改前需要删除相关的所有表的主键和索引,可以通过sys.indexes 系统视图查看,修改前需要备份,修改完后再恢复。

3.修改后需要重新编译视图:sp_refreshview   'V_DimAccount'

可以通过以下脚本获取所有的视图。

select   name

from  sysobjects

where1=1 AND  xtype='V'  and  status>=0

3.修改数据库级排序规则

如果希望整个数据库的排序规则进行修改,则可以通过以下代码实例实现:

ALTER DATABASE [DW] ----数据库名称

COLLATE Latin1_General_100_CI_AS_SC

注意

1.修改之前需要把数据库设置为Single模式。

4.修改Server级排序规则

如果希望修改Server级的排序规则,会相对复杂一些。

意执行CMD时以管理员账号运行:

----1. 停止SQL Server实例服务

Net stop mssqlserver

----2. 打开“命令提示符”,转到SQL Server的安装目录---搜索关键词Setup Bootstrap

------C:\Program Files\Microsoft SQL Server\140\Setup Bootstrap\SQL2017

cd "\Program Files\Microsoft SQL Server\140\Setup Bootstrap\SQL2017"-----具体目录依实际情况定

----3. 运行setup---注意实例名称的修改

Setup /QUIET /ACTION=REBUILDDATABASE /instancename=MSSQLSERVER /SQLSYSADMINACCOUNTS=[Account]/sapwd=[password]/sqlcollation=Latin1_General_100_CI_AS_SC------注意账号密码需要修改

---4. 启动SQL Server实例服务

Net start mssqlserver

注意

  • 更改完之后,系统数据库将分离状态,需要重新附加。
  • 所有的系统数据库会重新生成,因此之前设置的用户,权限等都会丢失,做之前需要做好备份。

SQL sever 排序规则介绍相关推荐

  1. Sql Server排序规则的简介、选择、应用

    用SQL语句查询当前数据库的默认排序规则 use db_name  exec sp_helpsort  go --以下转自:http://hi.baidu.com/jztchina/blog/item ...

  2. SQL自定义排序规则

    SQL自定义排序规则 原数据 结果顺序数据显示 Apply:提交请求 Review:等待回复 Finish:任务完成 按日期和状态排序,先状态为:提交请求(Apply)-按时间倒序,然后状态为:等待回 ...

  3. mysql数据库表更改排序_修改SQL数据库排序规则修改表栏位排序规则

    修改SQL数据库排序规则修改表栏位排序规则 修改SQL数据库排序规则: 1.修改为单用户模式 2.然后关闭所有的查询窗口,修改Options的Collocation属性,如:Chinese_PRC_9 ...

  4. SQL Server 排序规则(摘)

    3Sql Server数据库,在跨库多表连接查询时,若两数据库默认字符集不同,系统就会返回这样的错误:"无法解决equal to操作的排序规则冲突" 一.错误分析: 这个错误是因为 ...

  5. 修改sql服务器排序规则,SQL SERVER数据库服务器排序规则修改

    SQL Server服务器修改排序规则的方法 操作及验证步骤: 1 登录数据库后,查看当前安装数据库默认排序规则的两种方式 方式一.使用SQL Server 2014 Management Studi ...

  6. SQL 修改排序规则的问题 sql_latin1_general_cp1_ci_as

    在一个项目中遇到:用原来的数据库生成的脚本,然后部署到新的服务器上,数据库的SQL_Latin1_General_CP1_CI_AS 怎么查询出来汉字都是乱码了. 遂查解决方法. 需要执行这个 ALT ...

  7. sql 汉字排序规则(笔画、拼音)

    按姓氏笔画排序 Select * From TableName Order By Name Collate Chinese_PRC_Stroke_CI_AS 按姓氏拼音排序 SELECT * FROM ...

  8. MS SQL 排序规则总结

    排序规则术语 什么是排序规则呢? 排序规则是根据特定语言和区域设置标准指定对字符串数据进行排序和比较的规则.SQL Server 支持在单个数据库中存储具有不同排序规则的对象.MSDN解释:在 Mic ...

  9. SQL之COLLATE 子句 排序规则

    COLLATE 是一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则转换. 语法 COLLATE { <collation_name> | databa ...

最新文章

  1. WijmoJS 2019V1正式发布:全新的在线 Demo 系统,助您快速上手,开发无忧
  2. 【Leetcode | easy】有效的括号
  3. 如何代替set get方法
  4. Mysql,再见吧,select * !
  5. WEB前端开发规范文档
  6. 剑指offer——面试题49:把字符串转换成整数
  7. php中引用的真正理解-变量引用、函数引用、对象引用
  8. 1.Entity Framework Core 5.0教程,概述和准备
  9. JavaScript-Date类的getMonth方法释疑
  10. 手把手教你使用Python写贪吃蛇游戏(pygame)
  11. C#设计模式之5——生成器模式
  12. FME将ArcGIS符号化转为CAD填充
  13. pdf文件过大如何缩小?
  14. PHP 开源 ERP 系统 Discover
  15. 华东理工大学计算机考研资料汇总
  16. NR PRACH(一)Preamble的确定
  17. 物理机安装linux系统,U盘在物理机安装linux系统
  18. python绘制contourf填色图,数值超出色条设定的范围时出现空白区域
  19. Web重构之道 大漠
  20. 【Pyecharts】Python数据可视化:英雄联盟2020赛季数据全方位解读~

热门文章

  1. linux 目录最大文件数,Linux目录数和文件数限制(目录上最大文件数)
  2. 母亲骑摩托4千里回家看儿子 为保险女扮男装
  3. 2022年湖北二级建造师机电工程施工相关标准练习题及答案
  4. [Blender]人物骨骼+机械传动-笔记
  5. Acwing第37场周赛题解
  6. php微信拍照图库js接口,微信JSSDK 实现打开摄像头拍照再将相片保存到服务器
  7. 什么牌子的 Iphone4比较好
  8. 百变星君,Python变量两三事
  9. 合并视频的方法有哪些?
  10. ERP之高级数据报表