5

SQL Server Express 2012 で実行されているデータベースの特定の列について、文字列を比較するときに ss と ß が同じと見なされない照合が必要です。また、ä と ae、ö と oe、ü と ue はそれぞれ異なるものと見なす必要があります。Latin1_General_CI_AS は後者を提供しますが、ss と ß は区別されません。つまり、とWHERE ThatColumn = 'Fass'の両方が得られます。FassFaß

私は単純に BIN/BIN2 に固執しますが、大文字と小文字を区別しない必要があります。他に何も機能しない場合は、Latin1_General_BIN/Latin1_General_BIN2 を使用し、すべてが大文字または小文字であることを自分で確認する必要があります。適切な大文字と小文字を使用してバージョンを取得できるようにする必要があるため、より多くの作業が必要になります。

しかし、私が必要とする照合があれば、私に知らせてください。前もって感謝します!

更新: 要件に関する詳細情報: データベースには、ASCII 文字のみをサポートしていたレガシー システムの個人名が含まれています。つまり、Müller や Faß などの名前は、Mueller および Fass として保存されます。新しいシステムでは、ユーザーはこれらの人の名前を変更する機能を持っています。たとえば、"Mueller" を "Müller" に名前変更します。名前を変更する必要があるエンティティを見つけるには、「Fass」などを含む行を検索する必要があります。しかし、現在のように、クエリは「Faß」も返しますが、これは私が望んでいるものではありません。ユーザーが「fass」を検索して「Fass」を取得できるようにする必要があるため、大文字と小文字を区別しない必要があります。

システムには他にもありますが、ss と ß、ä と ae などを区別する必要があると断言できます。

4

1 に答える 1

1

照合 SQL_Latin1_General_CP1_CI_AS は 'ss' を 'ß' とは異なると見なすため、うまくいく可能性があります。これは従来の照合順序であるため、オペレーティング システムやアプリケーション プラットフォームとの互換性がなくなる可能性があります。また、私が知らない他の癖があるかもしれません。

数年前、私は似たような問題に対する不親切な回避策をスケッチしました。ここでそれを見ることができます。(「回避策(1)」タブをクリックしてください。)その場合の問題は、文字列比較の結果ではなく、キー列の一意性に関するものであったため、状況に適用します(2つの列を比較して単一の文字列比較を行います)無理かもしれません。

于 2012-04-27T17:24:55.987 に答える