46

varchar大文字と小文字を区別するフィールドに一意の制約を作成するにはどうすればよいですか(SQL Server 2005)。

現在、私の制約は次のようになっています。

alter table MyTable
add constraint UK_MyTable_MyUniqueKey unique nonclustered (MyCol)

次の2つの値を挿入しようとすると、「Violation ofUNIQUEKEYconstraint...」エラーが発生します。

insert into MyTable (MyCol) values ('ABC')
insert into MyTable (MyCol) values ('abc') --causes a violation of UNIQUE KEY constraint 'UK_MyTable_MyUnqiueKey'

大文字と小文字が異なる2つの値をunqiueとして処理したいと思います。add constraint次のコードが含まれると思いますが、構文がどのように変わるかわかりません。

COLLATE SQL_Latin1_General_CP1_CS_AS
4

2 に答える 2

64

これにより、列が大文字と小文字を区別するように変更されます。制約に変更はないと思います...

ALTER TABLE mytable 
ALTER COLUMN mycolumn VARCHAR(10) 
COLLATE SQL_Latin1_General_CP1_CS_AS

この操作の結果、この列での選択または結合は大文字と小文字が区別されます。

于 2009-01-27T21:38:38.143 に答える
4

データベース内のデータの大文字と小文字の区別のみを設定できます (列の最小粒度)。インデックスの大文字と小文字の区別を設定することはできません。これは、一部のデータベースでは可能ですが、Sql Server では可能ではない式でインデックスを作成できることと同じです。

于 2009-01-27T21:45:03.497 に答える