1

Arabic_BINMicrosoft SQL Server 2005で照合を行うデータベースがあります。

このクエリを実行すると:

SELECT ID FROM maj_Users WHERE UserName = 'mahdi'

何も得られませんが、次のクエリを実行すると:

SELECT ID FROM maj_Users WHERE UserName = 'Mahdi'

セルを取得します... SQL Server は大文字と小文字を区別してデータベースを検索しているようですが、データベースを大文字と小文字を区別せずに検索したいと考えています。

何か方法はありますか?

編集:私も試しSELECT ID FROM maj_Users WHERE UserName LIKE 'mahdi'ましたが、うまくいきませんでした...

4

2 に答える 2

8

SQL Server は、大文字と小文字を区別する方法でデータベースを検索することも、大文字と小文字を区別しない方法でデータベースを検索することもありません。関連する列の照合に従ってそれを行います。大文字と小文字を区別する照合と大文字と小文字を区別しない照合があります。Collat​​ion and Unicode Supportを読むことをお勧めします。または比較を開始しないでください。これは正しいアプローチではなく、sarg 機能によりパフォーマンスに深刻な影響を与えます。UPPERLOWER

于 2012-07-14T20:28:16.477 に答える
6

COLLATE キーワードを使用して、比較でデータベースまたは列レベルで定義された COLLATION をオーバーライドできます。

SELECT ID FROM maj_Users WHERE UserName = 'Mahdi' COLLATE [collation name]

大文字と小文字を区別しないアラビア語の照合順序を検索するには、次のクエリを使用します

select * from fn_helpcollations()
where name like 'Arabic%' and name like '%CI%'

Arabic_CI_AI または Arabic_100_CI_AI が適切な選択のようです。

于 2012-07-14T20:27:22.153 に答える