具有零到多参数的SQL子句

时间:2010-09-14 14:14:35

标签: sql mysql

我有一个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正则表达式,它永远不会匹配任何字符串?像%。%或类似东西......

谢谢!

4 个答案:

答案 0 :(得分:16)

你可以说:

where name in (null)

这永远不会匹配,因为没有任何东西等于null(甚至不是null本身。)

答案 1 :(得分:4)

null不应与任何内容匹配。

答案 2 :(得分:0)

我认为您无法保证永远不会匹配现有字符串。你可以做的最好的事情是处理语句对数据库不起作用的情况;但是,在不知道脚本如何执行的情况下,我无法从中找到更多信息。

答案 3 :(得分:0)

名称不能为空,所以你可以做空字符串吗?