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