台灣最大程式設計社群網站
線上人數
567
 
會員總數:245785
討論主題:189420
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> 多個條件的搜尋
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
多個條件的搜尋
價值 : 0 QP  點閱數:973 回應數:0
樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員

1.把你的 sql select 切成三大部分,第一段是 select 欄位 from 表格;第二段是 where 條件;第三段是後續的語法,如 order by 或 group by 或 having

2.那麼你會發現第一段與第三段幾乎不會改變,只有 where 條件會因為使用者輸入查詢條件的多寡而有所變動,這時只要依序判斷該條件是否有輸入,即可決定要不要在 sql select 中加這個 where 條件式

3.可是這裡有一個問題,第一個條件式要加 where,第二個以後的應該要加 and,那怎麼判斷勒?其實不需要,只要在原本第一段的部分加上一個永遠成立的條件式,那麼由使用者輸入的查詢條件就只要帶 and 就可以了咩,通常這部分我會用 where 主鍵值 is not null,primary key 不應該有 null 值出現吧!

4.最後把這三段字串組合起來,就是你要的查詢語法了

依你的範例來說!

dim strSQL
dim strSelect, strWhere, strOrder

'假設 pkey 是 table 的 primary key
strSelect = "select * from 資料表 where (pkey in not null) "
strOrder = "order by pkey asc "
strWhere = ""

'搜尋條件有四個,依序判斷是否有輸入
if request.form("name") <> "" then
strWhere = strWhere & "and (col_name = '" & request.form("name") & "') "
end if
if request.form("phon") <> "" then
strWhere = strWhere & "and (col_name = '" & request.form("phon") & "') "
end if
if request.form("address") <> "" then
strWhere = strWhere & "and (col_name = '" & request.form("address") & "') "
end if
if request.form("school") <> "" then
strWhere = strWhere & "and (col_name = '" & request.form("school") & "') "
end if

'最後把三段字串加起來就是你要的查詢語法,不難吧!!
strSQL = strSelect & strWhere & strOrder

本篇文章發表於2002-05-01 00:00
目前尚無任何回覆
   

回覆
如要回應,請先登入.