我正在尝试根据用户提供的参数进行 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%';