2017-12-18 23 views
0

私は、異なるケースの単語を含む配列の列を持つテーブルを持っています。大文字と小文字を区別するANY

SELECT * FROM table WHERE 'tag' = ANY(tags::TEXT[]); 

のように、必須のタグを含むすべての行を選択できますが、配列内の単語も大文字にすることができますか?私は、配列の列からすべての一意の値を得ることができる方法だ


UPDATE

SELECT DISTINCT LOWER(unnest) 
     FROM (SELECT unnest(tags) FROM table) AS all_tags; 

多分それはあなたが選択をするとに選択する必要が役に立つ

+0

を見つけましたか?あなたが何を求めているのかは不明です。 – lurker

+0

@lurker「タグ」を探していますが、{タグ、タグ、タグ}のいずれも見つかりません。 –

+0

[PostgreSQLの大文字と小文字を区別しないSELECTの配列](https://stackoverflow.com/)が重複している可能性があります。質問/ 16311289/postgresqlの大文字小文字を区別しないselect-on-array) – Demo

答えて

2
select * 
from my_table 
where 'tag' ilike any(tags) 

Per the documentation:

ILIKEがアクティブロケールに従ってマッチ大文字と小文字を区別しないを作る代わりに等を用いることができるキーワード。

+0

しか表示されません。反対の値を参照してください。 –

+0

わかりません。ここで試してみてください:[SqlFiddle](http://sqlfiddle.com/#!17/7d51f/1)そして動作しないものを表示してください(修正された例のリンクを貼り付けてください)。 – klin

+0

大文字と小文字が1つの配列に含まれていると動作しません –

-1

になりますタグフィールドを大文字にするか、配列の内容も同じ状態にする。 これを行うには、タグを保存するか、実際のコンテンツを大文字または小文字に更新し、このフィールドにインデックスを定義し、配列の内容を同じ状態に設定します。

0

このクエリは、「それらを考慮」したいどうすればよいのすべて

SELECT * FROM (SELECT *, lower(unnest(tags)) AS val FROM table) x WHERE val = 'c++'; 
関連する問題