sql where 1=1和 0=1 的作用

where 1=1; 這個條件始終為True,在不定數量查詢條件情況下,1=1可以很方便的規范語句。

一、不用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'“;}

  ①種假設

  如果上述的兩個IF判斷語句,均為True,即用戶都輸入了查詢詞,那么,最終的MySqlStr動態構造語句變為:

  MySqlStr=”select * from table where Age='18' and Address='云南省文山州廣南縣小波嗎村'”

  可以看得出來,這是一條完整的正確的SQL查詢語句,能夠正確的被執行,并根據數據庫是否存在記錄,返回數據。

  ②種假設

  如果上述的兩個IF判斷語句不成立,那么,最終的MySqlStr動態構造語句變為:

  MySqlStr=”select * from table where“

  現在,我們來看一下這條語句,由于where關鍵詞后面需要使用條件,但是這條語句根本就不存在條件,所以,該語句就是一條錯誤的語句,肯定不能被執行,不僅報錯,同時還不會查詢到任何數據。

  上述的兩種假設,代表了現實的應用,說明,語句的構造存在問題,不足以應付靈活多變的查詢條件。

  二、使用 where 1=1 的好處

  假如我們將上述的語句改為:

  

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'“;}

  現在,也存在兩種假設

  ①種假設

  如果兩個IF都成立,那么,語句變為:

  MySqlStr=”select * from table where 1=1 and Age='18' and Address='云南省文山州廣南縣小波嗎村'”,很明顯,該語句是一條正確的語句,能夠正確執行,如果數據庫有記錄,肯定會被查詢到。

  ②種假設

  如果兩個IF都不成立,那么,語句變為:

  MySqlStr=”select * from table where 1=1”,現在,我們來看這條語句,由于where 1=1 是為True的語句,因此,該條語句語法正確,能夠被正確執行,它的作用相當于:MySqlStr=”select * from table”,即返回表中所有數據。

  言下之意就是:如果用戶在多條件查詢頁面中,不選擇任何字段、不輸入任何關鍵詞,那么,必將返回表中所有數據;如果用戶在頁面中,選擇了部分字段并且輸入了部分查詢關鍵詞,那么,就按用戶設置的條件進行查詢。

  說到這里,不知道您是否已明白,其實,where 1=1的應用,不是什么高級的應用,也不是所謂的智能化的構造,僅僅只是為了滿足多條件查詢頁面中不確定的各種因素而采用的一種構造一條正確能運行的動態SQL語句的一種方法。


where 1=0; 這個條件始終為false,結果不會返回任何數據,只有表結構,可用于快速建表

"SELECT * FROM strName WHERE 1 = 0"; 該select語句主要用于讀取表的結構而不考慮表中的數據,這樣節省了內存,因為可以不用保存結果集。

create table newtable as select * from oldtable where 1=0; 創建一個新表,而新表的結構與查詢的表的結構是一樣的。


轉載于:https://www.cnblogs.com/owenyang/archive/2012/11/15/3579088.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/377091.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/377091.shtml
英文地址,請注明出處:http://en.pswp.cn/news/377091.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

j@2ff4f00f_J4F的完整形式是什么?

j2ff4f00fJ4F:只是為了好玩 (J4F: Just For Fun) J4F is an abbreviation of "Just For Fun". J4F是“ Just For Fun”的縮寫 。 It is an expression, which is commonly used in messaging or chatting on social media networking sites like Faceboo…

《dp補卡——子序列問題》

目錄300. 最長遞增子序列674. 最長連續遞增序列718. 最長重復子數組1143. 最長公共子序列53. 最大子序和392. 判斷子序列115. 不同的子序列583. 兩個字符串的刪除操作72. 編輯距離647. 回文子串 (與 5.最長回文子串思路差不多)516. 最長回文子序列300. 最…

[LeetCode] Maximal Rectangle

Given a 2D binary matrix filled with 0s and 1s, find the largest rectangle containing all ones and return its area. 在做 Largest Rectangle in Histogram的時候有人說可以用在這題,看了一下還真是,以每行為x軸,每列往上累計的連續的…

什么是alpha測試_什么是ALPHA?

什么是alpha測試Α (ALPHA) Alpha is the first and foremost letter of the Greek alphabet. In the classification of Greek numerals or numbers, it constitutes a value of 1. Alpha是希臘字母的第一個也是最重要的字母 。 在希臘數字或希臘數字的分類中,它的…

《leetcode : 647. 回文子串 思考分析雙指針解法》

647. 回文子串 如何確定是回文串: 找中心然后往兩邊擴散,判斷是否對稱即可。 在遍歷中心點的時候,注意中心點可以是一個元素也可以是兩個元素。 class Solution { public:int cal_two_extend(const string& s,int i,int j,int n){int re…

天草初級班(3)

算術運算指令算術運算指令是反映CPU計算能力的一組指令,也是編程時經常使用的一組指令。它包括:加、減、乘、除及其相關的輔助指令。 該組指令的操作數可以是8位、16位和32位(80386)。當存儲單元是該類指令的操作數時,該操作數的尋址方式可以…

4.3.3版本之引擎bug

bug描述:   IOS設備上,當使用WWW www WWW.LoadFromCacheOrDownload(url, verNum); 下載資源時,第一次下載某個資源,www.assetBundle必定為空。 解決辦法:   引擎版本降到4.3.2或者升到4.3.4或更高。 這個bug絕對是…

sml完整形式_411的完整形式是什么?

sml完整形式411:信息 (411: Information) 411 is an abbreviation of “Information". 411是“信息”的縮寫 。 It is an expression, which is commonly used in messaging or chatting on social media networking sites like Facebook, Yahoo Messenger, a…

php 檢測用戶是否關閉瀏覽器

1、例子1 echo str_repeat(" ",3000);ignore_user_abort(true); mylog(online);while (true) {/** 1、程序正常結束 connection_status 0* 2、點擊瀏覽器“停止”按鈕 connection_status 1* 3、超時 connection_status 2*/echo "test<br>\n&qu…

explain用法

explain用法 EXPLAIN SELECT …… 變體&#xff1a; 1. EXPLAIN EXTENDED SELECT …… 將執行計劃“反編譯”成SELECT語句&#xff0c;運行SHOW WARNINGS 可得到被MySQL優化器優化后的查詢語句 2. EXPLAIN PARTITIONS SELECT …… 用于分區表的EXPLAIN 執行計劃包含的信息 id…

《位運算技巧以及Leetcode的一些位運算題目》

目錄技巧練習位運算[461. 漢明距離](https://leetcode-cn.com/problems/hamming-distance/)[190. 顛倒二進制位](https://leetcode-cn.com/problems/reverse-bits/)[136. 只出現一次的數字](https://leetcode-cn.com/problems/single-number/)[260. 只出現一次的數字 III](http…

linux讀取配置文件(C語言版)

一個通用的linux系統中C語言版讀取配置文件的函數。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #include <errno.h>#define KEYVALLEN 100/* 刪除左邊的空格 */ char * l_trim(char * szOutput, con…

java 范圍搜尋要怎么弄_搜索范圍

java 范圍搜尋要怎么弄Problem statement: 問題陳述&#xff1a; Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value. 給定一個以升序排列的整數nums數組&#xff0c;請找到給定目標值的開始和結束…

boa + ajax + cgi ajax請求cgi

最近公司要做一個通訊管理機,然后需要和另外一個同事一起做,我們需要用到boaAjaxCGI,以前沒試過與CGI交互,一開始發現問題挺大的,用ajax請求cgi,總是不返回數據,又或者請求回來的是cgi的源碼,后來發現,通過本地IIS或者直接打開html頁面請求的,返回來的都是cgi的源碼或者返回失敗…

《DBNotes:single_table訪問方法、MRR多范圍讀取優化、索引合并》

目錄single_table訪問方法constrefref_or_nullrangeindexallMRR多范圍讀取優化索引合并intersectionunionsort-unionsingle_table訪問方法 const 在主鍵列或者unique二級索引與一個常數進行等值比較時才有效。 如果主鍵或者unique二級索引的索引列由多個列構成&#xff0c;則…

怎樣通過命令管理Windows7桌面防火墻

&#xff08;1&#xff09;啟用桌面防火墻netsh advfirewall set allprofiles state on&#xff08;2&#xff09;設置默認輸入和輸出策略netsh advfirewall set allprofiles firewallpolicy allowinbound,allowoutbound以上是設置為允許&#xff0c;如果設置為拒絕使用blockin…

ruby推送示例_Ruby for循環示例

ruby推送示例for循環 (The for loop) In programming, for loop is a kind of iteration statement which allows the block to be iterated repeatedly as long as the specified condition is not met or a specific number of times that the programmer knows beforehand. …

《DBNotes: Buffer Pool對于緩沖頁的鏈表式管理》

目錄Buffer Pool回顧Buffer Pool內部組成freelistflushlistLRU鏈表管理以及改進Buffer Pool回顧 我們知道針對數據庫的增刪改刪操作都是在Buffer Pool中完成的&#xff0c;一條sql的執行步驟可以認為是這樣的&#xff1a; 1、innodb存儲引擎首先在緩沖池中查詢有沒有對應的數據…

一個延時調用問題

如果用下面第1行的寫法&#xff0c;調用 [NSObject cancelPreviousPerformRequestsWithTarget:self selector:selector(removeFromSuperview) object:nil]; 可以生效 如果用下面第3行的寫法&#xff0c;調用 [NSObject cancelPreviousPerformRequestsWithTarget:self selector:…

onclicklistener 方法使用匯總

相信很多像我一樣的新手學習ANDROID開發會遇到這個問題&#xff0c;通過這幾天的歸類和總結&#xff0c;將我的理解寫在下面&#xff0c;歡迎大家一起前來討論&#xff1a; 以按鈕BUTTON的監聽事件為例&#xff0c;以下的監聽實現都是等價的&#xff1a; 1.使用接口繼承按鈕監聽…