COLLATE (Transact-SQL)

更新日期: 2005 年 12 月 5 日

一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则转换。

主题链接图标Transact-SQL 语法约定

语法

COLLATE { <collation_name> | database_default }
<collation_name> :: = 
     { Windows_collation_name } | { SQL_collation_name }

参数

  • collation_name
    应用于表达式、列定义或数据库定义的排序规则的名称。collation_name 可以只是指定的 Windows_collation_nameSQL_collation_namecollation_name 必须是文字值。collation_name 不能用变量或表达式表示。

    Windows_collation_name 是用于 Windows 排序规则名称的排序规则名称。

    SQL_collation_name 是用于 SQL 排序规则名称的排序规则名称。

  • database_default
    使 COLLATE 子句继承当前数据库的排序规则。

备注

可以在多个级别指定 COLLATE 子句。其中包括:

  1. 创建或更改数据库。
    可以使用 CREATE DATABASE 或 ALTER DATABASE 语句的 COLLATE 子句指定数据库的默认排序规则。还可以在使用 SQL Server Management Studio 创建数据库时指定排序规则。如果不指定排序规则,则将为数据库分配 SQL Server 实例的默认排序规则。
  2. 创建或更改表列。
    可以使用 CREATE TABLE 或 ALTER TABLE 语句的 COLLATE 子句指定每个字符串列的排序规则。还可以在使用 SQL Server Management Studio 创建表时指定排序规则。如果不指定排序规则,将为列分配数据库的默认排序规则。
    还可使用 COLLATE 子句中的 database_default 选项,指定临时表中的列使用连接的当前用户数据库(而不是 tempdb)的默认排序规则。
  3. 转换表达式的排序规则。
    可以使用 COLLATE 子句将字符表达式转换为某个排序规则。为字符文本和变量分配当前数据库的默认排序规则。为列引用分配列的定义排序规则。有关表达式的排序规则,请参阅排序规则优先级 (Transact-SQL)

标识符的排序规则取决于定义标识符时所在的级别。为实例级对象(如登录名和数据库名)的标识符分配实例的默认排序规则。为数据库对象(如表、视图和列名)的标识符分配数据库的默认排序规则。例如,对于名称差别仅在于大小写的两个表,可在使用区分大小写排序规则的数据库中创建,而不能在使用不区分大小写排序规则的数据库中创建。有关详细信息,请参阅标识符

当连接上下文与某个数据库相关时,可以创建变量、GOTO 标签、临时存储过程和临时表,且当已将上下文切换到其他数据库时引用它们。变量、GOTO 标签、临时存储过程和临时表的标识符位于实例的默认排序规则中。

COLLATE 子句只能应用于 charvarchartextncharnvarcharntext 数据类型。

排序规则一般由排序规则名标识。例外情况是:在安装过程中没有为 Windows 排序规则指定排序规则名称,而是指定排序规则指示器,然后选择复选框以指定区分或不区分大小写和重音的二进制排序或字典排序。

可以执行系统函数 fn_helpcollations 以检索 Windows 排序规则和 SQL 排序规则的所有有效排序规则名称的列表:

SELECT *
FROM fn_helpcollations()

SQL Server 只支持由基础操作系统支持的代码页。在执行取决于排序规则的操作时,引用的对象所使用的 SQL Server 排序规则必须使用计算机上运行的操作系统所支持的代码页。这些操作可能包括:

  • 当创建或更改数据库时,为数据库指定默认排序规则。
  • 当创建或更改表时,为列指定排序规则。
  • 当还原或附加数据库时,操作系统必须支持数据库的默认排序规则,并支持数据库中的任何 charvarchartext 列或参数的排序规则。
    charvarchar 数据类型支持代码页转换,但是 text 数据类型不支持。不报告代码页转换过程中的数据丢失。

如果被引用的对象所使用或指定的排序规则使用 Windows 不支持的代码页,则 SQL Server 将发出错误。

请参阅

参考

ALTER TABLE (Transact-SQL)
排序规则优先级 (Transact-SQL)
常量 (Transact-SQL)
CREATE DATABASE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
表 (Transact-SQL)

其他资源

使用排序规则
使用 Unicode 数据

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2005 年 12 月 5 日

新增内容:
  • 添加了 collation_name 参数的附加说明:collation_name 必须是文字值。collation_name 不能用变量或表达式表示。