Sql多條件查詢

2022-01-12 18:34:09 字數 2432 閱讀 4741

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查詢...