7

テーブル変数列の定義にSQL_Latin1_General_CP1_CS_ASを照合することは可能ですか?

これを実行したい理由は、ソーステーブルに大文字と小文字を区別する情報がありますが、それをテーブル変数に挿入すると、主キーに問題があります(クラスター化されています)-重複した値が検出されます-「すべて」のようにおよび「ALL」。

そのため、次のステートメントのように、テーブル変数の列で大文字と小文字を区別する方法を見つけようとしています。

SELECT SERVERPROPERTY ('Collation')

私に与える: "SQL_Latin1_General_CP1_CI_AS"

4

2 に答える 2

9

はい、可能です。テーブル変数を宣言するときに、各列の照合を指定できます。

declare @T table
(
  Col varchar(20) collate SQL_Latin1_General_CP1_CS_AS
)
于 2012-08-13T08:09:54.877 に答える
2

はい。次のスクリプトを書くのに2分ほどかかりました。

declare @T table (
    ID int not null,
    Val1 varchar(10) collate SQL_Latin1_General_CP1_CS_AS not null primary key
)

insert into @T(ID,Val1) values (1,'All'),(2,'ALL')

insert into @T(ID,Val1) values (3,'All')

最初に2つの行を格納し、次に2番目のinsertステートメントでエラーを格納しました。

于 2012-08-13T08:12:17.510 に答える