从参数生成 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%';

相关内容