PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie führe ich eine Suchanfrage für einen Spaltenwert durch, der eine Zeichenfolge mit kommagetrennten Werten enthält?

Sie können so etwas tun.

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

1) Löschen Sie Leerzeichen in der vorhandenen Zeichenfolge für eine ordnungsgemäße Trennung von Zeichenfolge_zu_Array ohne Leerzeichen am Anfang, indem Sie Ersetzen

verwenden

2)string_to_array konvertiert Ihren String in ein durch Komma getrenntes Array.

3) @> ist der contains Betreiber

(ODER)

Wenn Sie als Ganzes übereinstimmen möchten

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

Für separate Übereinstimmungen können Sie tun

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

Mehr über die Position hier