一尘不染

带零到许多参数的子句中的SQL

sql

我有一个由非常有限的内部框架参数化的SQL查询。查询如下所示:

Select * from somewhere
where name IN (:parameter);

该代码会将零到多个字符串注入到:parameter指定的位置。“:parameter”标志只能在“
IN”子句中使用(因此不能在where子句之后移动以有条件地插入“ name IN”)。

有时用户会将参数设置为:

‘dog’, ‘cat’

有时,用户不会将任何值放入:parameter变量中。这会导致问题,因为生成的SQL查询将是:

Select * from somewhere
where name IN ();

我的代码可以捕获参数为空的情况,但是我需要将某些东西注入IN语句中,以确保永远不会匹配实际的字符串。

有没有我可以插入的SQL正则表达式,它从不与任何字符串匹配?诸如%。%之类的东西。

谢谢!


阅读 133

收藏
2021-05-16

共1个答案

一尘不染

你可以说:

where name in (null)

这将永远不会匹配,因为没有什么等于null(甚至没有等于null)。

2021-05-16