タグのテキスト配列列を持つpostgresqlテーブルがあります。
この配列にタグがあります。
1つ以上のタグが配列にあるかどうかを確認する最良の方法は何ですか?
たとえば、配列{A、B、C、D}でタグAとCの行を検索したいが、{A、D、E}では一致しない、ユーザーが必要な数のタグを検索できるようにしたい。
今のところ私は使用します:
SELECT * FROM tarray WHERE ('tag1'=ANY(tags) AND 'tag4'=ANY(tags))
ただし、2つ以上のタグを簡単に見つけることはできません。
配列のcontains演算子は<@
です。
陽性のテストケース
postgresdb=> select ARRAY['tag1', 'tag4'] <@ ARRAY['tag1', 'tag2', 'tag4'] as result;
-[ RECORD 1 ]
result | t
ネガティブテストケース
postgresdb=> select ARRAY['tag1', 'tag4'] <@ ARRAY['tag1', 'tag2'] as result;
-[ RECORD 1 ]
result | f
ユースケースの場合、クエリは次のようになります
SELECT * FROM tarray WHERE ARRAY['tag1', 'tag4'] <@ tags
その他の機能については、postgresのドキュメントを参照してください
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加