MySQL Select mit Funktion IN () mit Bash-Array

MySQL Select mit Funktion IN () mit Bash-Array

Wie kann ich dies mit einem Array machen? (ohne das Array als normale Variable zu speichern)

VAR='String1 String2 String3'
SELECT * FROM db.table WHERE xy IN ( ${VAR// /, } );

nicht funktionierendes Beispiel:

SELECT * FROM db.table WHERE xy IN ( ${ARRAY[@]// /, } );

Antwort1

Die Array-Erweiterung & der AustauschIstfunktioniert, aber es gibt keine Leerzeichen in Ihrem ArrayElemente. Vergleichen mit:

$ array=("one two" three four)
$ echo "${array[@]/ /, }"
one, two three four

,Sie versuchen, die Array-Elemente mit einem Komma und Leerzeichen ( ) zwischen ihnen wieder zu verbinden . Ich werde die Kopie stehleneine von Glenn Jackmans Antwortenin diesem Sinne:

$ array=(String1 String2 String3)
$ joined=$( set -- "${array[@]}"; IFS=,; echo "$*" )

Dann können Sie verwenden:

SELECT * FROM db.table WHERE xy IN "$joined"

Als Beispiel:

$ array=("String1 String2" String3 String4)
$ joined=$( set -- "${array[@]}"; IFS=,; echo "$*" )
$ echo "$joined"
String1 String2,String3,String4

Ich weiß nicht spontan, was Sie mit SQL machen müssen, um Array-Elemente (Strings), die Leerzeichen enthalten (falls welche vorhanden sind), in Anführungszeichen zu setzen.

verwandte Informationen