我有一个由非常有限的内部框架参数化的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正则表达式,它从不与任何字符串匹配?诸如%。%之类的东西。
谢谢!
你可以说:
where name in (null)
这将永远不会匹配,因为没有什么等于null(甚至没有等于null)。
null