sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo realizar una consulta de búsqueda en un valor de columna que contiene una cadena con valores separados por comas?

Puedes hacer algo como esto.

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

1) elimine espacios en la cadena existente para una separación adecuada de cadena a matriz sin espacios en el frente usando reemplazar

2) string_to_array convierte su cadena en una matriz separada por comas.

3) @> es el contains operador

(O)

Si desea hacer coincidir como un todo

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

Para partidos separados que puedes hacer

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

Más información sobre la posición aquí