사용자가 제공한 인수로 SQL 쿼리를 만들려고 합니다.
스키마 이름, 테이블 이름 및 조건이 인수에 의해 제공되는 일부를 가정해 보겠습니다.
schema='myschema'
table='testtable'
where_column='dob'
where_column2='firstname'
위의 인수를 사용하여 아래 SQL 문을 생성할 수 있습니다.
select * from myschema.testable where dob **i can add some value later** and firstname **some value**
다음번에는 다음 인수를 사용합니다.
schema='myschema'
table='testtable'
where_column='dob'
우리는 필터링에만 관심이 있습니다 dob
. 따라서 SQL 쿼리는 다음과 같습니다.
select * from myschema.testable where dob ** I can add some value later**
나는 이것을 만드는데 막혔습니다. 두 개의 where
조건 인수가 있으면 그 사이에 모든 것을 쿼리에 넣습니다 AND
. 조건이 하나만 where
제공되는 경우 해당 조건만 사용하세요.
답변1
그게 당신에게 효과가 있을까요?
#!/bin/bash
from=$1; shift # remove the first argument from $@
for i; do
if [ -n "$where" ]; then # if "$where" is not empty then...
where+=" AND "
fi
where+="$i"
done
printf 'SELECT * FROM %s WHERE %s;\n' "$from" "$where"
첫 번째 인수는 schema.table
이고 다음 인수는 WHERE
절에 사용됩니다.
산출:
$ ./script.sh myschema.table "dob = 'dib'"
SELECT * FROM myschema.table WHERE dob = 'dib';
$ ./script.sh myschema.table "dob = 'dib'" "firstname = 'Bhuvanesh'" "foo LIKE 'bar%'"
SELECT * FROM myschema.table WHERE dob = 'dib' AND firstname = 'Bhuvanesh' AND foo LIKE 'bar%';