ユーザー提供の引数から 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
条件引数が 2 つある場合は、その間にあるすべてのものをクエリに入れますAND
。条件が 1 つだけ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%';