MySQL Seleccionar con función IN () con matriz bash

MySQL Seleccionar con función IN () con matriz bash

¿Cómo puedo hacer esto con una matriz? (sin almacenar la matriz como variable regular)

VAR='String1 String2 String3'
SELECT * FROM db.table WHERE xy IN ( ${VAR// /, } );

ejemplo que no funciona:

SELECT * FROM db.table WHERE xy IN ( ${ARRAY[@]// /, } );

Respuesta1

La expansión y el reemplazo de la matrizesfuncionando, pero no hay espacios en su matrizelementos. Comparar con:

$ array=("one two" three four)
$ echo "${array[@]/ /, }"
one, two three four

Estás intentando volver a unir los elementos de la matriz con una coma y un espacio ( ,) entre ellos. robaré copiauna de las respuestas de glenn jackmanen esta vena:

$ array=(String1 String2 String3)
$ joined=$( set -- "${array[@]}"; IFS=,; echo "$*" )

Entonces puedes usar:

SELECT * FROM db.table WHERE xy IN "$joined"

Como ejemplo:

$ array=("String1 String2" String3 String4)
$ joined=$( set -- "${array[@]}"; IFS=,; echo "$*" )
$ echo "$joined"
String1 String2,String3,String4

No sé de antemano qué necesitará hacer con SQL para citar elementos de matriz (cadenas) que contienen espacios (si los hay).

información relacionada