配列でこれをどのように実行できますか? (配列を一般変数として保存しない)
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
コンマとスペース()を使用して,
配列要素を再結合しようとしています。コピーを盗みたいGlen Jackmanの答えの1つこのような精神で:
$ 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で何をすべきかわかりません。