分類: mysql
2007-10-24 22:34
2218人閱讀收藏
舉報 mysql
sql產品工作
在做搜尋頁面時,我們經常會遇到多條件查詢,且這些條件是不定的,也就是說當使用者輸入的條件引數為空時,該條件是不應該加到sql語句中去的。舉例來說,我們要對乙個產品表product進行搜尋,可能的條件是這樣的:1、**為100;2、產品名包含關鍵字p,寫成條件就是where price = 100 and name like '%p%',問題是這裡的100和關鍵字p都是使用者進行的選擇或輸入,當使用者並沒有選擇或輸入其中的一項時,該項的過濾條件也就不應當存在,這樣我們在頁面中就需要進行邏輯判斷,當條件越多,if語句也就出現得越多,頁面中就出現了大量的組合sql語句的邏輯,這顯然增加了寫程式的工作量以及維護**的難度。
解決方案:將這類複雜的查詢sql語句(說它複雜,是因為需求多變,可能查詢的字段不同,可能需要聯合幾個表進行查詢,可能排序規則不同)先寫成模板放入專門的sql模板檔案中,針對mysql,上面提到的問題涉及到的sql模板語句如下:select * from product where price = if('' = '', price, '') and name like if('' = '', name, '%%') 這裡的price和name分別為產品表中的兩個欄位名,{}標誌位是我們要將引數替換進去的地方,這樣在查詢頁面只需呼叫sql模板語句,並替換相應的引數即可。(假設使用者沒有過濾**,則為空,那麼得到的sql語句類似於:select * from product where price = price and name like 'p',其中price = price就起到了不進行過濾的作用,這樣就達到了動態生成多條件查詢語句的目的,頁面中也就不需要進行繁瑣的組合sql語句的工作了)。
0 給主人留下些什麼吧!~~
MySql 多條件查詢
ci model裡面乙個多重條件搜尋,place type thefind 三個條件初始值為空 搜尋all 在根據前端資訊設定條件 根據條件搜出進行模糊查詢 place plcae type type descrption,lostname,type thfind 資料庫 lost message表...
Mybatis 多條件動態查詢
例 簡單的乙個查詢 select from student tbl st where st.student name like concat concat 但是此時如果studentname是null或空字串,此語句很可能報錯或查詢結果為空。此時我們使用if動態sql語句先進行判斷,如果值為null...
MS SQL之多條件動態查詢
在網上看到乙個sql server的多條件查詢,感覺很精練,並結合實際的專案,做了乙個帶分頁的儲存過程 create procedure sgetrtableheadp mc 獲取簡歷數目並建立臨時表分頁,帶多條件引數查詢 status varchar 50 city varchar 100 高階查...