![MySQL 使用函数 IN () 和 bash 数组进行选择](https://linux22.com/image/122265/MySQL%20%E4%BD%BF%E7%94%A8%E5%87%BD%E6%95%B0%20IN%20()%20%E5%92%8C%20bash%20%E6%95%B0%E7%BB%84%E8%BF%9B%E8%A1%8C%E9%80%89%E6%8B%A9.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 执行什么操作来引用包含空格(如果有)的数组元素(字符串)。