我怎样才能用数组做到这一点? (不将数组存储为常规变量)
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 执行什么操作来引用包含空格(如果有)的数组元素(字符串)。