我的报告接受以下两个值之一:
- 表示 ALL 的字符串“*”,或
- 表示人的 ID 的整数
所以,基本上,我有一个查询:
SELECT * FROM people where personid = ?
如果我传入一个整数,报告会完美运行,但如果我传入一个 * 表示全部,它就会中断。此外,如果我保持原样并传入一个字符串,则查询没有意义。即这有效:
SELECT * FROM people where personid = 5
但这不会:
SELECT * FROM people where personid = *
- 如果传入参数,我该如何重写它以便返回“all”?即如果值为*,它可以完全忽略where子句,但如果值为整数,它必须执行where子句。
目前,如果收到错误:
我可以将 * 改为 -1。因此,另一种方法是重写 sql,以便在传入 -1 时忽略约束。像这样:
SELECT * FROM people WHERE (param = -1 OR (param != -1 AND personid = param) )
..但这似乎不起作用?