【问题标题】:How to make a column case sensitive in sql 2005 or 2008如何在 sql 2005 或 2008 中使列区分大小写
【发布时间】:2010-10-22 18:46:22
【问题描述】:

是否可以根据列更改默认排序规则?我想让 1 列区分大小写,但其他所有列不区分

【问题讨论】:

    标签: sql sql-server sql-server-2005 sql-server-2008


    【解决方案1】:

    ALTER TABLE ALTER COLUMN 允许更改单个列的排序规则:

    alter table Foo alter column Bar ntext collate Latin1_General_CS_AS 
    

    (排序可能不正确)

    【讨论】:

    • 关于排序规则的说明:由于源表是 Latin1_General_CS_AS 和一个是 Latin1_General_CI_AI,我不得不编写太多的 COLLATE 语句。这只适用于使用 SSIS 移动数据的情况,或者至少,这是我唯一遇到过问题的地方。
    【解决方案2】:

    我并不特别了解 SQL Server,但普遍接受的 DBMS 做法(出于兼容性考虑)是:

    • 将插入和更新触发器放在表上,以便它们存储在您想要的情况下。
    • 根据需要使用生成的列来存储该列的另一个副本。

    在 SQL Server 中可能有更快的方法来执行此操作,但您应该小心将工作负载推入 SELECT 语句的解决方案 - 它们永远不会很好地扩展。作为插入和更新的一部分,这样做几乎总是更好,因为这是唯一一次数据更改 - 这样做可以最大限度地减少额外的工作量。

    【讨论】:

      【解决方案3】:

      你的问题的答案是肯定的,上面Anton Gogolev已经说过了。

      附加信息:

      您可以根据其版本找到 SQL Server 支持的排序规则列表。

      select name, 
             COLLATIONPROPERTY(name, 'CodePage') as Code_Page, 
             description
      from   sys.fn_HelpCollations()
      

      what is the meaning of Kanatype Sensitive KS and width sensitive

      【讨论】:

        猜你喜欢
        • 2014-05-26
        • 1970-01-01
        • 2023-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-12
        • 2015-06-29
        相关资源
        最近更新 更多