2017-08-16 4 views
0

現在、私は列「filename」のデータを検索または比較する際に大文字小文字を区別しないようにするために取り組んでいます。 ファイル DBには、SAMPLE.txtとsAMple.Txtという名前のファイルがあります。それが正常に作成されたPSQLの大文字と小文字を区別しないINDEX lower()は機能しません

CREATE INDEX files_lower_fnames_idx ON files ((lower(filename))); 

... そして、私は

SELECT * from files where filename='sample.txt' 

だから、私はこのコマンドでインデックスを作っ実行すると私は同じ名前を持つこのすべてのファイルを取得したいです...。 しかし実行時に...

SELECT * from files where filename='sample.txt' 

まだ0行を返しました。

何か不足していますか? ありがとうございます。

+0

lower(filename)= 'sample.txt' – jimmy8ball

+0

の代わりにSELECT *を使用する必要があります。大文字と小文字を区別しないアクセント記号に設定すると、SAmPle.Txtはsample.txtと同じになります – jimmy8ball

答えて

1

まだ0行を返しました。インデックスの作成

クエリの結果、唯一パフォーマンスクエリのには影響を持っていません。インデックスを作成する前に0行を返した場合は、それも後にする必要があります。

なぜあなたはテーブルにデータを表示していないので、それは0行を返しています。しかし、それがあなたのことであれば、

SELECT * from files where filename='sample.txt' 

と一致しません。あなたはどちらかcitext列を必要とする、またはあなたがより速く実行するために作成したインデックスを使用することができるはずです

SELECT * from files where lower(filename)='sample.txt' 

このクエリのように大文字小文字を区別しないクエリを実行します。

+0

Understood 。ありがとうございました! :) –

関連する問題