bash 배열을 사용하여 IN() 함수를 사용하여 MySQL 선택

bash 배열을 사용하여 IN() 함수를 사용하여 MySQL 선택

배열로 이 작업을 어떻게 수행할 수 있나요? (배열을 일반 변수로 저장하지 않고)

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에 무엇을 해야 하는지 직접 알 수 없습니다.

관련 정보