SQL Server 中索引的排序规则

发布于 2024-11-11 14:31:39 字数 80 浏览 4 评论 0原文

我感兴趣的是,在创建与该列的排序规则不同的索引时是否可以为该列指定排序规则? 当建立索引时,字符串数据是根据列的排序规则还是数据库的排序规则排序?

I am interested if there is a possibility to specify collation for a column when creating index that is different from the collation of that column?
And when indexed, are string data sorted according to collation of column or collation of database?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

挽清梦 2024-11-18 14:31:39

您可以使用所需的排序规则创建计算字段,并在此字段上创建索引。

You can create the calculated field with needed collation and create the index on this field.

我们只是彼此的过ke 2024-11-18 14:31:39

我不相信你可以。尽管 COLLATE 是单独记录的,但您会注意到只有 3 个列出了可能发生这种情况的地方:

  • 创建或更改数据库
  • 创建或更改表列
  • 转换表达式的排序规则

请注意,例如,在 CREATE TABLE

<column_definition> ::=
column_name <data_type>
    [ FILESTREAM ]
    [ COLLATE collation_name ] 
    ...

明确提及 COLLATE 子句。

然而,在 CREATE INDEX 中:

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON <object> ( column [ ASC | DESC ] [ ,...n ] ) 
    ...

请注意,此处允许的只是列 - 不是列定义,也不是表达式。


我相信索引中每列的排序规则遵循相应表中基础列的排序规则。据我所知,除了在 CREATE/ALTER 表语句期间为列提供默认排序规则之外,数据库排序规则的用途并不多。

I don't believe you can. Although COLLATE is documented separately, you'll note that there are only 3 places listed where it can occur:

  • Creating or altering a database
  • Creating or altering a table column
  • Casting the collation of an expression

Note that, for instance, in CREATE TABLE:

<column_definition> ::=
column_name <data_type>
    [ FILESTREAM ]
    [ COLLATE collation_name ] 
    ...

that the COLLATE clause is explicitly mentioned.

Whereas, in CREATE INDEX:

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON <object> ( column [ ASC | DESC ] [ ,...n ] ) 
    ...

note that all that is allowed here is a column - not a column definition, nor an expression.


I believe the collation of each column within an index follows the collation of the underlying column(s) in the appropriate table. The database collation isn't used for much, so far as I'm aware, other than to supply a default collation to columns during CREATE/ALTER table statements.

淡水深流 2024-11-18 14:31:39

尝试创建索引视图并将排序规则添加到 select 语句中的列。

Try making an Indexed view and add the collation to the column in the select statement.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文