一、不用where 1=1 在多條件查詢中的困擾
舉個例子,如果您做查詢頁面,并且,可查詢的選項有多個,同時,還讓用戶自行選擇并輸入查詢關鍵詞,那么,按平時的查詢語句的動態構造,代碼大體如下:
復制代碼 代碼如下:
string MySqlStr=”select * from table where”;
if(Age.Text.Lenght>0)
{
MySqlStr=MySqlStr+“Age=“+“'Age.Text'“;
}
if(Address.Text.Lenght>0)
{
MySqlStr=MySqlStr+“and Address=“+“'Address.Text'“;
}
復制代碼 代碼如下:
MySqlStr=”select * from table where Age='18' and Address='云南省文山州廣南縣小波嗎村'”
復制代碼 代碼如下:
MySqlStr=”select * from table where“
復制代碼 代碼如下:
string MySqlStr=”select * from table where 1=1 ”;
if(Age.Text.Lenght>0)
{
MySqlStr=MySqlStr+“and Age=“+“'Age.Text'“;
}
if(Address.Text.Lenght>0)
{
MySqlStr=MySqlStr+“and Address=“+“'Address.Text'“;
}
復制代碼 代碼如下:
MySqlStr=”select * from table where 1=1 and Age='18' and Address='云南省文山州廣南縣小波嗎村'”,很明顯,該語句是一條正確的語句,能夠正確執行,如果數據庫有記錄,肯定會被查詢到。
MySqlStr=”select * from table”,即返回表中所有數據。
言下之意就是:如果用戶在多條件查詢頁面中,不選擇任何字段、不輸入任何關鍵詞,那么,必將返回表中所有數據;如果用戶在頁面中,選擇了部分字段并且輸入了部分查詢關鍵詞,那么,就按用戶設置的條件進行查詢。
說到這里,不知道您是否已明白,其實,where 1=1的應用,不是什么高級的應用,也不是所謂的智能化的構造,僅僅只是為了滿足多條件查詢頁面中不確定的各種因素而采用的一種構造一條正確能運行的動態SQL語句的一種方法。
where 1=0; 這個條件始終為false,結果不會返回任何數據,只有表結構,可用于快速建表
復制代碼 代碼如下:
"SELECT * FROM strName WHERE 1 = 0";
復制代碼 代碼如下:
create table newtable as select * from oldtable where 1=0; 創建一個新表,而新表的結構與查詢的表的結構是一樣的。
新聞熱點
疑難解答