在以下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, '')
答案 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
部分在任何一种情况下都不会改变结果。