`?` заполнитель для условия SQL `IN` с постоянным` rawSql`

На самом деле ваше выражение files+=( "$input" ) добавляет элементы в ваш массив, но вы не итерируете его правильно.

Ваш последний цикл должен быть:

for f in "${files[@]}"; do
    echo "element is: $f"
done

Тест (благодаря @fedorqui)

$ a+=(1)
$ a+=("hello")
$ a+=(3)
$ for i in "${a[@]}"; do echo "$i"; done
1
hello
3
2
задан Geradlus_RU 16 January 2019 в 14:10
поделиться

1 ответ

Я не думаю, что есть способ сделать это с persistent. postrgresql-simple (при условии, что мы говорим о Postgres здесь), который используется в persistent, имеет специальную конструкцию в , которая корректно переводится в In (..) в SQL, но persistent, похоже, не использует его. Можно надеяться, что в качестве обходного пути можно использовать конструктор PersistDbSpecific , который принимает в качестве аргумента ByteString (поэтому мы можем вручную выполнить рендеринг и передать что-то вроде (123,456,789)), но, к сожалению, он преобразуется в SQL через Неизвестный , который затем визуализируется с помощью Escape , который не только экранирует строку, но и заключает ее в кавычки , что делает наш SQL недействительным. Если бы persistent использовали Plain (что, на мой взгляд, имело бы гораздо больше смысла), этот подход работал бы, но, к сожалению, это не так.

0
ответ дан Ed'ka 16 January 2019 в 14:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: