sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur gör man en sökfråga på ett kolumnvärde som innehåller en sträng med kommaseparerade värden?

Du kan göra något sånt här.

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

1) ta bort blanksteg i den befintliga strängen för korrekt string_to_array-separation utan mellanslag i fronten med ersätt

2)string_to_array konverterar din sträng till array separerad med kommatecken.

3) @> är innehåller operatör

(ELLER)

Om du vill matcha som en helhet

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

För separata matchningar kan du göra

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

Mer om position här



  1. Få aktuellt AUTO_INCREMENT-värde för valfri tabell

  2. Hämta data från MySQL-databasen till html-rullgardinslistan

  3. Autentiseringsplugin 'caching_sha2_password' stöds inte

  4. Jag kan inte starta MySQL Server från kommandoraden i Windows