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로 무엇을 해야 하는지 모르겠습니다.

관련 정보