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 執行什麼操作來引用包含空格(如果有)的陣列元素(字串)。

相關內容