배열로 이 작업을 어떻게 수행할 수 있나요? (배열을 일반 변수로 저장하지 않음)
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로 무엇을 해야 하는지 모르겠습니다.