MySQL Selecione com a função IN () com matriz bash

0

Como posso fazer isso com uma matriz? (sem armazenar o array como variável regular)

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

não funciona exemplo:

SELECT * FROM db.table WHERE xy IN ( ${ARRAY[@]// /, } );
    
por FaxMax 22.11.2017 / 17:12

1 resposta

1

A expansão da matriz & substituição está funcionando, mas não há espaços em sua matriz elementos . Compare com:

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

Você está tentando juntar novamente os elementos da matriz com uma vírgula & espaço ( , ) entre eles. Vou roubar copiar uma das respostas de glenn jackman nesse sentido:

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

Então você pode usar:

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

Como exemplo:

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

Eu não sei de improviso o que você precisa fazer para o SQL para citar elementos de matriz (Strings) que contenham espaços (se houver).

    
por 22.11.2017 / 17:35