Eu tenho uma tabela "artigo" e para cada entrada existem algumas "tags" armazenadas (coluna array)
name | tags
test1 | {t1,t3}
test2 | {t2,t3}
test3 | {t3}
test4 | {t1,t5}
test5 | {t1,t3}
test6 | {t2,t3}
Eu posso consultar tags que passaram como uma matriz:
SELECT name, tags FROM article WHERE tags && array['t1','t3','t10']::_varchar
Isso está funcionando, mas eu realmente quero conseguir que apenas as entradas sejam retornadas quando todas as tags da entrada estiverem na matriz passada. (não apenas 1)
Use o operador contains
<@
para verificar se o array de tags contém todos os elementos do array "other"Exemplo on-line
https://dbfiddle.uk/?rdbms=postgres_14&fiddle=55ff28e62e884047187c9e9f275934f4
tags
deve ser a coluna do tipo de dados JSONB. Caso contrário, converta-o para JSONB.