【问题标题】:How to use collate in a constraint?如何在约束中使用整理?
【发布时间】:2016-11-09 13:56:00
【问题描述】:

我需要添加一个约束以将大写的特定样本数据输入到名为 State 的列中。这就是我尝试过的。但它返回错误消息“关键字'COLLATE'附近的语法不正确。”

ALTER TABLE [Client]
ADD CONSTRAINT [client_statecheck]
CHECK COLLATE  SQL_Latin1_General_CP1_CS_AS (State in('QLD', 'NSW', 'VIC','TAS', 'SA', 'WA', 'NT', 'ACT' ));

【问题讨论】:

    标签: sql sql-server sql-server-2014 collation


    【解决方案1】:

    我认为您需要在列级别实现 COLLATION 而不是在添加约束时。

       ALTER TABLE Client ALTER COLUMN State 
                        varchar(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL;
        ALTER TABLE [Client]
        ADD CONSTRAINT [client_statecheck]
        CHECK (State in('QLD', 'NSW', 'VIC','TAS', 'SA', 'WA', 'NT', 'ACT' ));
    

    【讨论】:

    • 列的输入只有这些。 'QLD'、'NSW'、'VIC'、'TAS'、'SA'、'WA'、'NT'、'ACT'。
    【解决方案2】:

    COLLATE 不适用于 IN...

    查看以下链接了解更多信息和解决方案。

    http://www.sqlservercentral.com/Forums/Topic594604-338-1.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多