sql 多條件查詢的一種簡單的方法
以前我們做多條件查詢,一種是排列結合,另一種是動態拼接sql
如:我們要有兩個條件,乙個日期@adddate,乙個是@name
第一種寫法是
if (@adddate is not null) and (@name <> '')
select * from table where adddate = @adddate and name = @name
else if (@adddate is not null) and (@name ='')
select * from table where adddate = @adddate
else if(@adddate is null) and (@name <> '')
select * from table where and name = @name
else if(@adddate is null) and (@name = '')
select * from table
第二種就是動態組成sql,通過exec來執行,我就不寫,
昨天我想到一種辦法
select * from table where (adddate = @adddate or @adddate is null) and (name = @name or @name = '')
結果一除錯,成功,
一點想法,有更好方法的,請指教!~
# re: sql 多條件查詢的一種簡單的方法 2004-07-16 15:18
fengzhimei
應該還可以這樣寫:
select * from table where isnull(adddate, @adddate) = @adddate and isnull(name, "") = @name
或者:
select * from table where adddate in (@adddate,null) and name in (@name, "")
#re: sql 多條件查詢的一種簡單的方法 2004-07-16 15:32
edobnet
你沒有理解我的意思!
#re: sql 多條件查詢的一種簡單的方法 2004-07-16 15:34
edobnet
我的意思是,@adddate = null 不參加搜尋,
@name = ''不參加搜尋!
#re: sql 多條件查詢的一種簡單的方法 2004-07-16 16:18
goodspeed
我一般是這樣來做的
select * from table where
adddate = case @adddate is null then adddate else @adddate end,
name = case @name when '' then name else @name end
#re: sql 多條件查詢的一種簡單的方法 2004-07-16 23:21
progame
我的方法:
dim qm as querymanager
dim cv1 as concreteview
dim cv2 as concreteview
dim sql as string
set qm = m_con.createquerymanager
set cv1 = m_con.createconcreteview
set cv2 = m_con.createconcreteview
cv1.sql = "select code from tdalop where #namefilter# "
cv1.setfilter "namefilter", "name = :name"
cv1.setparam "name", ".!)(@#&09452342'#''"""
cv2.sql = "select * from tdalop where #codefilter# and #uidfilter#"
cv2.setfilter "codefilter", "code in "
cv2.addview cv1, "codelist"
cv2.addview cv1, "codelist"
cv2.setfilter "uidfilter", "uid = :uid"
cv2.setparam "uid", "0"
otestresult.addtrace cv2.getoutputsql
qm.execute cv2
# re: sql 多條件查詢的一種簡單的方法 2004-07-16 23:21
progame
凡是查詢的引數為空的,直接使用 1=1 代替,這樣就避免了資料庫中該字段為null的情況
SQL多條件查詢子查詢SQL多條件查詢子查詢
多條件搜尋時where 1 1並不高效,如果使用這種方法,在資料庫中會做全表查詢 對每行資料都進行掃瞄比對 會無法使用索引等優化查詢的策略,建立的索引會暫時失效。case函式 case必須和end一起使用,下接when then select 數學成績 case when math 100 then...
多條件查詢的sql
用程式來生成。例如 四個框分別為 txt1,txt2,txt3 對應字段分別為 key1,key2,key3,key4 查詢的表名為 table 程式如下 txt1 requtst.form txt1 取得變數 txt2 requtst.form txt2 txt3 requtst.form txt...
SQL語句多條件查詢
sql多條件查詢中如果有and和or,and的優先順序高於or,如果不加括號會先執行and,然後再執行or 資料表 一 查詢時先且查詢,則先and條件查詢,查詢結果與or後面的條件進行或查詢 sql語句 select from ceshi where name a and age 10 or 1查詢...