MySQL Select с функцией IN() с массивом bash

MySQL Select с функцией IN() с массивом bash

Как это сделать с массивом? (без сохранения массива как обычной переменной)

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, чтобы заключить в кавычки элементы массива (строки), содержащие пробелы (если таковые имеются).

Связанный контент