SQL Server排序规则决定数据如何排序、比较、表现和存储。
SQL Server允许两种类型的排序规则:Windows或SQL. Windows排序规则是SQL Server的首选,因为它们提供了更多选项并且和微软Windows环境提供的支持一致。 SQL排序规则用于早期的SQLSewer版本,并且提供了向后兼容性。
除了SQL Server和数据库级别的排序规则设置,各个列也可以有自己的排序规则设置。如果你需要在某个列中保存字符数据,而该列使用的默认排序规则与数据库或服务器级别的排序规则不同,则可以在列定义中使用COLLATE([kə'leɪt] 对照;校对;校勘;整理)命令。
对于varchar、char、nchar、nvarchar数据类型的列,可以在CREATE TABLE或ALTER TABLE操作中显式定义Windows或者SQL排序规则。
排序规则定义了3个设置:
- 用于保存非Unicode字符数据类型的代码页;
- 非Unicode字符数据类型的排列顺序;
- Unicode数据类型的排列顺序。
SQL Server实例的默认排序规则在安装时候定义,你可以使用默认的排序规则,也可以显式修改它。
可以使用SERVERPROPERTY函数和Collation选项来确定SQL Server实例的默认设置。例如:
SELECT SERVERPROPERTY('Co11ation')
除了SQL Server实例的默认排序规则设置,也可以对数据库定义一个默认排序规则。可以使用DATABASEPROPERTYEX系统函数来确定数据库默认的排序规则。例如,查询确定AdventureWorks数据库默认的数据库排序规则(第一个参数是数据库名,第二个是要查看的Collation选项):
SELECT DATABASEPROPERTYEX('AdventureWorks','Collation')
使用fn_helpcollations表函数来获取更友好的信息。
SELECT description
FROM sys.fn_helpcollations()
WHERE name='SQL_Latin1_general_CP1_C1_AS'