ああ、でもそれは ありますので可能です これを自然に処理する照合順序 (実際にはいくつかありますが、すべて同じ「ファミリー」にあります):Hungarian_Technical_* (まあ、CaseSensitive (CS) と Binary (BIN / BIN2) のバリエーションを除く)。もちろん、これが PK として適切な選択であるかどうかはまだわかりませんが、UNIQUE INDEX
にできない理由はありません。 .
SELECT tmp.*,
IIF(tmp.[First] = tmp.[Second] COLLATE Hungarian_Technical_CI_AI,
N'Equal',
N'NOT EQUAL') AS [Result]
FROM (
SELECT N'weiß', N'Weiß', N'Equal'
UNION ALL
SELECT N'weiss', N'Weiss', N'Equal'
UNION ALL
SELECT N'weiß', N'weiss', N'NOT Equal'
UNION ALL
SELECT N'Weiß', N'Weiss', N'NOT Equal'
UNION ALL
SELECT N'weiß', N'Weiss', N'NOT Equal'
) tmp ([First], [Second], [Ideal]);
結果:
First Second Ideal Result
weiß Weiß Equal Equal
weiss Weiss Equal Equal
weiß weiss NOT Equal NOT EQUAL
Weiß Weiss NOT Equal NOT EQUAL
weiß Weiss NOT Equal NOT EQUAL
この方法で機能する合計 24 の照合順序があります。次の方法で見つけることができます:
SELECT hc.*
FROM sys.fn_HelpCollations() hc
WHERE hc.name LIKE N'Hungarian[_]Technical%'
AND hc.name LIKE N'%[_]CI%'
ORDER BY hc.name;
それらは:
バージョン 100
の場合 照合が利用可能である (つまり、SQL Server 2008 以降を使用している) 場合は、名前にバージョン番号のない照合ではなく、それらを使用してください。
編集:
"Hungarian Technical" 照合について、興味深いと思われる追加情報を見つけました:
- <リ>
MySQL:ハンガリー語照合 -- これは、照合を実装する方法の詳細を理解しようとしている一部の MySQL 開発者による listserv ディスカッションのアーカイブです。どうやら、いくつかの複雑な規則があり、少なくとも部分的には、ソートのために複数の文字を 1 つの文字に等しくする必要があるためです (セクション「3. 特別な digraph/trigraph ルール」を参照してください)。これはかもしれない 予期しない動作を引き起こします。特定の文字の組み合わせはそのセクションに記載されているため、少なくとも、この照合を使用して並べ替えルールが無効になるかどうかを判断するのに役立つテスト ケースを設定しやすくなります。
<リ>ハンガリー語の照合順序が非常に多いのはなぜですか? -- これは、興味深い情報が含まれている social.msdn に関するディスカッションです。 Erland Sommarsko によるコメントがあり、次のように述べています。
複雑なルールに関する MySQL 開発者の議論を考えると、これらのテスト結果はそれほど驚くべきものではないようです。
したがって、これらの項目の両方を考慮して、単に NVARCHAR フィールドをこれらのハンガリーの技術照合順序のいずれかに設定するか、@GarethD の推奨する計算列を使用するかを決定する必要があります。
文字列と照合の詳細については、照合情報 をご覧ください。