매개변수에서 SQL 쿼리 생성

매개변수에서 SQL 쿼리 생성

사용자가 제공한 매개변수를 기반으로 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%';

관련 정보