次のようにPATINDEX関数を使用しようとしています。
select PATINDEX('%[A-Z].%', 'he.llo MA. asd ' collate Cyrillic_General_CS_AS)
私はそれが9を返すことを期待していますが、2を返します。また、最初のパラメーターで照合を指定し、キリル文字の代わりに Latin1_General_CS_AS を使用しようとしました-同じ結果です。
次のようにPATINDEX関数を使用しようとしています。
select PATINDEX('%[A-Z].%', 'he.llo MA. asd ' collate Cyrillic_General_CS_AS)
私はそれが9を返すことを期待していますが、2を返します。また、最初のパラメーターで照合を指定し、キリル文字の代わりに Latin1_General_CS_AS を使用しようとしました-同じ結果です。
これは、この SO スレッドに基づく私のおかしな回避策です(Matt Akers の回答が役に立たなかった場合):
select PATINDEX('%[ABCDEFGHIJKLMNOPQRSTUVWXYZ].%', 'he.llo MA. asd ' collate Latin1_General_CS_AS)
少しずつ進むように BINARY 比較を強制してみてください。
この人のリンクは、問題の解決に役立ちました。 リンク
取得していた 2 を複製し、COLLATE Latin1_General_BIN を使用すると、予想される 9 が返されました。
SELECT PATINDEX('%[A-Z].%', 'he.llo MA. asd ' COLLATE Latin1_General_BIN )