Komma separierten String in Funktion /stored procedure übergeben

where column = any (string_to_array(replace(delimSources,' ',''),','))
-- replace(source,old, new) => Leerzeichen entfernen
-- string_to_array(source,separator) => generiert ein array aus den String die durch den Separator getrennt sind
-- any => gleiche Bedingungsabfrage wie IN, entscheident ist, dass es auch ein array als Eingabe verarbeiten kann, während IN komma separierte Listen annimmt
-- https://stackoverflow.com/questions/34627026/in-vs-any-operator-in-postgresql

Normalerweise würde man etwas schreiben wir : WHERE column IN (‘bingo’,’bongo’)

Aber eine Komma separierte Variable einer Funktion zu übergeben scheint nicht das Gleiche zu sein, wie diese direkt in die IN Bedingung reinzuschreiben. Stattdessen muss daher dieser String in ein array umgewandelt werden um dann die Abfrage mit any() durchzuführen.

In MSSQL gibt es scheinbar gleiche Probleme und zwei etablierte Herangehensweisen sind:

  1. Ein dynamisches SQL erstellen und mit exec() ausführen
  2. Eine zugehörige table valued function erstellen

Quelle: http://www.itdeveloperzone.com/2013/03/using-variable-in-in-clause-in-sql.html

Kommentar verfassen

Your email address will not be published.