T-SQL中WHERE 1=1的作用

來源:互聯網
上載者:User

1=1或者'a'='a'等等恒等式是T-SQL中表達true的方法。因為在T-SQL中沒有true這樣的關鍵字或值,所以需要藉助這些恒等式來表達true的概念。
相對的,同樣可以使用1<>1或者1=2等來表達false。

在應用程式的安全性方面,使用這些式子是SQL注入的基本原理,所以在拼接SQL語句的時候要過濾各種各樣的敏感字元。

當然,這些式子也有有用的地方。今天看到一個挺有用的小技巧:

從一張表查詢一些記錄,這些記錄是根據name, age, height, weight來進行過濾得。但是,具體過濾條件的個數是不確定的,比如有時候會是name和age的組合,有時候會是name, height和weight的組合,甚至有時候沒有任何條件。
怎麼辦?
一般性的拼接SQL語句的方法會需要做一個判斷:在第一個條件前面加上WHERE關鍵字。但是,這樣做會需要添加一組判斷的邏輯,以檢驗是否當前的條件是第一個條件。

這裡,引進WHERE 1=1就可以很好的省略掉上述的判斷邏輯。
怎麼做呢?代碼如下:
string query = "SELECT * FROM USERINFO WHERE 1=1"

if (_name != string.Empty)
{

  query += " and name='" + _name + "'";
}
if (_age != string.Empty)
{

  query += " and age='" + _age + "'";
}

if (_height != string.Empty)
{

  query += " and height='" + _height + "'";
}
if (_weight != string.Empty)
{

  query += " and weight='" + _weight + "'";
}

當然,最好還是不要去拼接SQL語句咯,直接使用ADO的對象是最省事的方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.