Windows 排序规则名称 (Transact-SQL)

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW) Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库

指定 SQL Server 中 COLLATE 子句中的 Windows 排序规则名称。 Windows 排序规则名称是由排序规则指示符和比较样式构成的。

Transact-SQL 语法约定

语法

<Windows_collation_name> ::=
<CollationDesignator>_<ComparisonStyle>

<ComparisonStyle> ::=
{ <CaseSensitivity>_<AccentSensitivity> [ _<KanatypeSensitive> ] [ _<WidthSensitive> ] [ _<VariationSelectorSensitive> ]
}
| { _UTF8 }
| { _BIN | _BIN2 }

参数

CollationDesignator

指定 Windows 排序规则使用的基本排序规则。 基本排序规则涵盖:

  • 指定按字典排序时应用的排序和比较规则。 排序规则基于字母表或语言。
  • 用于存储 varchar数据 的代码页。

一些示例如下:

  • Latin1_GeneralFrench:两者都使用代码页 1252
  • Turkish:使用代码页 1254

CaseSensitivity

CI 指定不区分大小写, CS 指定区分大小写。

AccentSensitivity

AI 指定不区分重音, AS 指定区分重音。

KanatypeSensitive

省略此选项指定 kanatype-insensitive, KS 指定 kanatype-sensitive。

WidthSensitivity

省略此选项指定不区分宽度, WS 指定区分宽度。

VariationSelectorSensitivity

适用于:SQL Server 2017 (14.x) 及更高版本

省略此选项指定变体选择器不区分, VSS 指定变体选择器敏感。

UTF8

适用于:SQL Server 2019 (15.x) 及更高版本

指定用于符合条件的数据类型的 UTF-8 编码。 有关详细信息,请参阅 排序规则和 Unicode 支持

{ BIN |BIN2 }

  • BIN 指定要使用的向后兼容的二进制排序顺序。
  • BIN2 指定使用代码点比较语义的二进制排序顺序。

注解

根据排序规则的版本,某些代码点可能没有排序权重或定义的大写/小写映射。 例如,在给定相同字符时比较函数的 LOWER 输出,但在相同排序规则的不同版本中:

SELECT NCHAR(504) COLLATE Latin1_General_CI_AS AS [Uppercase],
       NCHAR(505) COLLATE Latin1_General_CI_AS AS [Lowercase];

结果集如下。

列名 Result
Uppercase Ǹ
Lowercase ǹ

第一个语句在较旧的排序规则中同时显示此字符的大写形式和小写形式(排序规则不会影响使用 Unicode 数据时字符的可用性)。

SELECT LOWER(NCHAR(504) COLLATE Latin1_General_CI_AS) AS [Version80Collation],
       LOWER(NCHAR(504) COLLATE Latin1_General_100_CI_AS) AS [Version100Collation];

结果集如下。

列名 Result
Version80Collation Ǹ
Version100Collation ǹ

第二个语句显示排序规则为排序规则 Latin1_General_CI_AS时返回大写字符,因为此代码点在该排序规则中未定义小写映射。

使用某些语言时,这对避免旧排序规则至关重要。 例如,这适用于 Telegu。

在某些情况下,Windows 排序规则和 SQL Server 排序规则可以为同一查询生成不同的查询计划。

示例

下表介绍了 Windows 排序规则名称的一些示例。

排序规则 说明
Latin1_General_100_CI_AS 排序规则使用 Latin1 常规字典排序规则并映射到代码页 1252。 它是版本 _100 排序规则,区分大小写(CI)和区分重音(AS)。
Estonian_CS_AS 排序规则使用爱沙尼亚字典排序规则并映射到代码页 1257。 它是版本 _80 排序规则(名称中没有版本号暗示),区分大小写(CS)和区分重音(AS)。
Japanese_Bushu_Kakusu_140_BIN2 排序规则使用二进制代码点排序规则并映射到代码页 932。 这是一个版本 _140 排序规则,日本的 Bushu Kakusu 字典排序规则将被忽略。

Windows 排序规则

若要列出您的 SQL Server 实例支持的 Windows 排序规则,请执行以下查询。

SELECT *
FROM sys.fn_helpcollations()
WHERE [name] NOT LIKE N'SQL%';