從參數產生 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%';

相關內容