2014-02-26 52 views
0

在下面的SQL查詢中。 where 1 = 1 and #condition1#是指什麼或意思? IM相當新的SQL query.plz幫助容易解釋其中1 = 1和#條件#功能?

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

#condition#不是SQL,有人把這個字符串作爲一個佔位符,通過SQL代碼中的其他地方的一些片段來代替。 1 = 1已作爲WHERE子句的初始接頭部分進行放置,以簡化無論代碼爲#condition#的任何代碼,這些代碼很可能是將若干可選子句組合在一起的代碼,這些子句沿着以下方向排列:

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部分在任何情況下都不會改變結果。