我正在嘗試根據用戶提供的參數進行 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%';