資料庫程式設計中經常遇到組合查詢的情況。
例如,某公司資料庫裡有一張存放使用者資訊的表user_info,它有多個字段:userid,id,name,age,***,address。其中userid是表的主碼,表示使用者的使用者號,該使用者號對每個使用者都是唯一的;id表示使用者省份證號。此時要對使用者資訊進行組合查詢,即給出這些欄位中的一條或幾條資訊來查詢該使用者。比如,可以只填寫userid、id、name來查詢,也可以填寫userid和id來查詢,這些組合是任意的,面對這問題,我們該怎麼辦呢?
當然,可以使用最直觀的方法,逐字段讀出資訊更查詢時提供的資訊相比較,若查詢時未提供該字段的資訊,則判為相符,這樣就無法避免的出現很多判斷,甚至會出現判斷的多層巢狀,對於如上例子問題還不嚴重,當表裡字段很多的時候,這樣大規模的判斷會讓程式設計師無法接受,而且嚴重冗餘,可讀性太差。
上邊的方法不僅造成**的冗餘和可讀性差,而且其效率也值得商榷。程式不停的去訪問資料庫,而且每次唯讀乙個字段,這樣一條對記錄的判斷要多次訪問資料庫,效率極低。此時,我們需要乙個更好的方法,可以把工作的細節交給dbms,我們只需要接收其返回的結果。sql的模糊查詢語句為我們提供了便利,假設如上使用者資訊查詢時輸入的值分別存放在以下幾個變數中:
string userid = /*得到使用者號*/;
string id = /*得到使用者省份證號*/;
string name = /*得到使用者姓名*/;
然後,我們對這些變數判斷是否為空,為空則賦值"_",為後邊的查詢做準備:
if(userid.empty())
//對id和那麼執行同樣操作
我們的精彩部分來了:
string strcommand = "select * from user_info where userid like '"+userid+"' and id like '"+id+"' and name like '"+name+"'";
然後用相應語句執行strcommand,我們組合查詢的結果就出來了。
SQL語句實現模糊查詢
我們可以在where子句中使用like來達到模糊查詢的效果 在where子句中,可以對datetime char varchar欄位型別的列用like子句配合萬用字元選取那些 很像.的資料記錄,以下是可使用的萬用字元 零或者多個字元 單一任何字元 下劃線 特殊字元 在某一範圍內的字元,如 0 9 或...
sql語句實現模糊查詢
在進行資料庫查詢時,有完整查詢和模糊查詢之分。一般模糊查詢語句如下 select 字段 from 表 where 某欄位 like 條件 其中關於條件,sql提供了四種匹配模式 1,表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請使用兩個百分號 表示。比如 select f...
SQL怎麼實現模糊查詢
模糊查詢的語句一般如下 select 字段 from 表 where 某欄位 like 條件 關於條件部分,有以下匹配模式 1.表示零個或多個字元。可以匹配任意型別和任意長度的字元,有些情況下若是中文,請使用兩個百分號 表示。select from user where username like ...