1 = 1和#condition #functionities?

时间:2014-02-26 11:05:25

标签: reporting-services rdlc

在以下SQL查询中。 where 1 = 1 and #condition1#指的是什么意思?我是一个相当新的SQL查询。

SELECT stuff((SELECT ', ' +ltrim(rtrim(p.SADDR1))+'('+ltrim(rtrim(p.scode)) + ')' 
FROM property p 
WHERE 1 = 1 #condition1# ORDER BY p.scode FOR XML path('')), 1, 1, '')

1 个答案:

答案 0 :(得分:2)

#condition#不是SQL,有人将其作为占位符放在字符串中,由代码中其他位置的SQL片段替换。 1 = 1已作为WHERE子句的初始包含部分放入,以简化代码,该代码构建了被#condition#替换的任何内容,很可能是组合了多个可选项的内容AND AND AND AND ,,,,,,,,,,,,,,

if(something1) myCondition = myCondition + " AND field1 = 'foo'";
if(something2) myCondition = myCondition + " AND field2 = 'bar'";
myQuery = myQuery.Replace("#condition#", myCondition);

因此生成的SQL最终可能会添加部分或全部额外条件:

... WHERE 1 = 1 AND field1 = 'foo' AND field2 = 'bar' ...

但即使没有添加它们,你仍然会留下:

... WHERE 1 = 1  ...

仍然是有效的SQL,1 = 1部分在任何一种情况下都不会改变结果。