【问题标题】:How I can obtain the collation of a specific table in a database?如何获取数据库中特定表的排序规则?
【发布时间】:2011-01-19 06:51:07
【问题描述】:

如何获取数据库中特定表的排序规则?数据库中的表是否可能具有不同的排序规则?

【问题讨论】:

    标签: sql sql-server collation


    【解决方案1】:

    就像一个注意点。 SSMS 可以在编写表格脚本时显示列排序规则。您可以进入工具-> 选项。在 SQL Server 对象资源管理器 -> 脚本下,有一个选项可以在编写表格脚本时显示排序规则。您可以暂时打开它并编写表格以查看表格创建代码,包括列排序规则。

    【讨论】:

    • 它叫Include collation,在Table and view options下。谢谢!
    【解决方案2】:

    表级别的排序规则是基于每列的,因此可能有与数据库不同的排序规则。如果排序规则未在列级别定义,则默认为数据库排序规则设置。

    SQL Server 2000:

    SELECT c.name, 
           c.collation 
      FROM SYSCOLUMNS c
     WHERE [id] = OBJECT_ID('your_table_name')
    

    SQL Server 2005+:

    SELECT c.name, 
           c.collation_name
      FROM SYS.COLUMNS c
      JOIN SYS.TABLES t ON t.object_id = c.object_id
     WHERE t.name = 'your_table_name'
    

    【讨论】:

    • 如果您使用架构INFORMATION_SCHEMA 而不是架构sys,后一种情况会更简单(没有连接或对象ID)。你会得到:SELECT COLUMN_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'your_table_name'
    • 对不起,以上评论仅适用于 SQL Server 2012 及更高版本,在编写答案时显然不可用,但我想现在大多数人都会使用它,所以评论仍然有用.
    【解决方案3】:

    没有表的排序规则。

    数据库有一个默认排序规则(默认为服务器的排序规则)。

    数据库的默认排序规则将应用于您添加到表中的任何列,除非您在列级别明确指定排序规则。

    【讨论】:

    • 我怎样才能得到这个列级排序规则?
    • SELECT c.name, c.collat​​ion_name FROM SYS.COLUMNS c JOIN SYS.TABLES t ON t.object_id = c.object_id WHERE t.name = 'MyTable' and c.name = 'MyColumn'
    • 如果有的话,我深表歉意。不过我一定是盲人,因为我仍然看不到它。当然非常接近,但用户要求特定列?我刚刚添加了 where 子句。
    猜你喜欢
    • 2016-07-05
    • 2010-11-20
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2015-02-09
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多