%20%D1%81%20%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%BE%D0%BC%20bash.png)
Как это сделать с массивом? (без сохранения массива как обычной переменной)
VAR='String1 String2 String3'
SELECT * FROM db.table WHERE xy IN ( ${VAR// /, } );
нерабочий пример:
SELECT * FROM db.table WHERE xy IN ( ${ARRAY[@]// /, } );
решение1
Расширение и замена массиваявляетсяработает, но в вашем массиве нет пробеловэлементы. Сравнить с:
$ array=("one two" three four)
$ echo "${array[@]/ /, }"
one, two three four
Вы пытаетесь заново объединить элементы массива с запятой и пробелом ( ,
) между ними. Я украду копиюодин из ответов Гленна Джекманав том же духе:
$ array=(String1 String2 String3)
$ joined=$( set -- "${array[@]}"; IFS=,; echo "$*" )
Тогда вы можете использовать:
SELECT * FROM db.table WHERE xy IN "$joined"
В качестве примера:
$ array=("String1 String2" String3 String4)
$ joined=$( set -- "${array[@]}"; IFS=,; echo "$*" )
$ echo "$joined"
String1 String2,String3,String4
Я не знаю навскидку, что вам нужно сделать с SQL, чтобы заключить в кавычки элементы массива (строки), содержащие пробелы (если таковые имеются).