PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come eseguire una query di ricerca su un valore di colonna contenente una stringa con valori separati da virgole?

Puoi fare qualcosa del genere.

select name from zone_table where 
string_to_array(replace(tags,' ',''),',')@>
string_to_array(replace('down, 110.22.100.3',' ',''),',');

1) elimina gli spazi nella stringa esistente per una corretta separazione da stringa a matrice senza spazi nella parte anteriore usando sostituisci

2)string_to_array converte la tua stringa in un array separato da virgole.

3) @> è il contains operatore

(OPPURE)

Se vuoi abbinare nel suo insieme

select name from zone_table where POSITION('down, 110.22.100.3' in tags)!=0

Per partite separate puoi fare

select name from zone_table where POSITION('down' in tags)!=0 and 
POSITION('110.22.100.3' in tags)!=0

Maggiori informazioni sulla posizione qui