Ich übergebe eine Zeichenfolge als param (via massivjs) in meine Abfrage. Die Zeichenfolge ist wie folgt formatiert: param = 'red, blue, green'
. Der Parameter selbst hat keine feste Länge (',' ist das Trennzeichen), da er durch das, was der Benutzer sendet, ausgefüllt ist (aber bei 10 Elementen maximal ist).Wie man einen String multipliziert (WHERE IN Abfrage)
Wie würde ich die Zeichenfolge in einzelne Strings in meiner Abfrage zerlegen?
Beispiel von dem, was ich zu tun versucht:
SELECT * FROM table
WHERE name IN (param);
Ich weiß, dass dies funktioniert, ist aber sehr sehr grob:
SELECT * FROM table
WHERE name IN (split_part(param, ',', 1), split_part(param, ',', 2) .......)) -- keep going.
Im Wesentlichen habe ich will (‚rot‘, ‚blau‘ , 'grün' ....) innerhalb der IN-Klammer. Gibt es einen schöneren Weg, dies zu erreichen?
funktioniert perfekt Dank! Eine schnelle Folge: Wie würde ich das ändern, um mit ganzen Zahlen umzugehen? Das ist, wenn die Tabelle ganze Zahlen hatte. Ist hier sowas wie Nummer anwendbar? – Suman
@SumanBhattarai In einem solchen Fall würde ich die Spalte in eine Zeichenfolge umwandeln, also vergleicht man Äpfel mit Äpfeln. AFAIK, Postgres hat keine praktische Möglichkeit, eine Funktion auf alle Elemente in einem Array anzuwenden. – Mureinik