動態(tài)拼接SQL語句

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語句的一種方法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容