PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como realizar uma consulta de pesquisa em um valor de coluna contendo uma string com valores separados por vírgula?


Você pode fazer algo assim.
select name from zone_table where 
string_to_array(replace(tags,' ',''),',')@>
string_to_array(replace('down, 110.22.100.3',' ',''),',');

1) exclua espaços na string existente para separação adequada de string_to_array sem espaços na frente usando substituir

2)string_to_array converte sua string em array separada por vírgula.

3) @> é o contains operador

(OU)

Se você quiser combinar como um todo
select name from zone_table where POSITION('down, 110.22.100.3' in tags)!=0

Para partidas separadas, você pode fazer
select name from zone_table where POSITION('down' in tags)!=0 and 
POSITION('110.22.100.3' in tags)!=0

Mais sobre a posição aqui