MySQL 使用函数 IN () 和 bash 数组进行选择

MySQL 使用函数 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 执行什么操作来引用包含空格(如果有)的数组元素(字符串)。

相关内容