2011-12-02 35 views
8

可能重複:
Why would someone use WHERE 1=1 AND <conditions> in a SQL clause?是否有合乎邏輯的理由在where子句中使用1 = 1?

我的工作,往往有

where 1=1

往往一個代碼庫,這些查詢都是複雜而難以閱讀。因此,純粹針對重構來分解查詢語義並不總是可行的。我的直覺是,這總是不必要的。在執行SELECT帶有聚合函數以及某些列組時,可能存在對where子句的要求類似於Group By子句的要求。

有沒有這種需求?

+4

是的,它是SQL注入容易的網站是非常有用的情況下,開發者) –

+0

我已經看到了SO一次或兩次,這個確切的問題,可能需要要更注意您輸入問題標題時出現的建議問題列表。 –

+0

其中1 = 1是一個100%的TRUE語句,所以無論你在SELECT語句中有沒有行,它都會返回。 –

回答

16

這使得構建的動態WHERE子句容易...

WHERE 
    1=1 
    AND condition1 
    AND condition2 

這樣,您就不用上班瞭如果您需要AND或不符合您的條件。你總是需要AND。

1

我認爲它能夠編寫長的WHERE子句而不必考慮虛假的AND語句。換句話說,它只是爲了讓代碼看起來更好。肯定會得到優化。然而,如果沒有前面是一個OR,這是SQL注入的味道:)

SELECT 
... 
WHERE 1=1 
AND COND 
AND ANOTHERCOND 
AND THIRDCOND 
-- AND COMMENTEDOUT 
AND FIFTHCOND 
+0

是的,但如果你的條件是「1 = 0」,那麼你是從哪裏開始的:) –

2

我已經看到了這樣做,建立動態查詢時,沒有必須要知道從哪裏開始AND條款,因爲一切後WHERE 1=1

2

它的有用的,如果你動態地添加限制您的SQL ,那樣你就不必關心'WHERE'關鍵字,並且可以在添加限制的每個部分的開始處使用'AND'。 (如果你想我可以編一個小例子來解釋它。)

所以,是的,有合法的使用1 = 1。

1

大多數使用它便於評論有條件的地方

相關問題