where 1=1; 這個條件始終為True,在不定數量查詢條件情況下,1=1可以很方便的規(guī)范語句。
舉個例子,如果做查詢頁面,并且,可查詢的選項有多個,同時,還讓用戶自行選擇并輸入查詢關鍵詞,那么,按平時的查詢語句的動態(tài)構造,就要有多個if進行判斷用戶的輸入
date_sql = " " if date == u'' else (" and field1='" + date + "' ")
script_sql = " " if xxx== u'' else (" and field2 like'" + '%'+xxx+'%' "' ")
sql = 'select field_name from table_name where 1=1' + date_sql + script_sql
where 1=1 恒成立,因此如果用戶在多條件查詢頁面中,不選擇任何字段、不輸入任何關鍵詞,那么,必將返回表中所有數據;如果用戶在頁面中,選擇了部分字段并且輸入了部分查詢關鍵詞,那么,就按用戶設置的條件進行查詢。
if sTime != None and eTime != None and len(sTime) > 0 and len(eTime) > 0:
sql_condition = " and date between '" + sTime + "' and '" + eTime + "'"
elif sTime != None and len(sTime) > 0:
sql_condition = " and date >= '" + sTime + "'"
elif eTime != None and len(eTime) > 0:
sql_condition = " and date <= '" + eTime + "'"
sql = "select field_name where 1=1" + sql_condition
where 1=1的應用,不是什么高級的應用,也不是所謂的智能化的構造,僅僅只是為了滿足多條件查詢頁面中不確定的各種因素而采用的一種構造一條正確能運行的動態(tài)SQL語句的一種方法。