sql sever經典語句

2021-06-16 17:02:13 字數 1665 閱讀 9742

前一段時間總是為一種查詢語句而苦惱,多重篩選條件,同時任意篩選條件都可以為空,且為空時即為不需要該篩選條件,不為空時附加該篩選條件。這該怎麼寫好呢?前台判斷為不為空不好處理,難道針對每一種情況寫條語句?這樣的話,四個查詢條件,2*2*2*2=16,這顯然有點離譜。在資料庫裡寫if邏輯語句,看似行得通,實際上更為痛苦!百思不得如何寫。一次偶然的機會讓我在網上發現了這麼條句型就解決問題了,真是欣喜若狂啊,下面分享給一樣為複雜的sql語句而苦惱的朋友們,此經典句型還是值得珍藏。

create proc pc_searchdispose

@dateone datetime,

@datetwo datetime,

@domestic bit,

@drug_type smallint,

@category smallint,

@special_composition smallint

asset xact_abort on

set transaction isolation level serializable

begin

select sd.drug_id,convert(char(10),sd.date,23) as disdate,sd.batchnum,sd.quantity,sd.origin,sd.reason,sd.disposeopinion,sd.disposemethod,sd.remark,convert(char(7),st.validity,23) as validity,

su.spupliername,d.drug_name,d.drug_specification,d.manufacturer_id,d.units,d.costprice,d.domestic,d.drug_type,d.category,d.specia_composition,sp.class_name as types into #aa from stock_dispose sd

join drug_document d on sd.drug_id=d.drug_id

join stock_drug st on sd.drug_id=st.drug_id and sd.batchnum=st.batch_number

left join suppliers su on sd.supplierid=su.supplierid

left join system_parameter sp on d.types=sp.class_id and sp.label_id='01'

where convert(char(10),sd.date,23) between convert(char(10),@dateone,23) and convert(char(10),@datetwo,23)

select * from #aa where (@domestic is null or domestic=@domestic) and (@drug_type is null or drug_type=@drug_type) and (@category is null or category=@category) and (@special_composition is null or specia_composition=@special_composition)

drop table #aa

end重點紅色部分條件語句。

sql還是很強大的啊,有待學習……

MSSQL經典語句

1.按姓氏筆畫排序 select from tablename order by customername collate chinese prc stroke ci as 2.資料庫加密 select encrypt 原始密碼 select pwdencrypt 原始密碼 select pwdco...

MSSQL經典語句

1.按姓氏筆畫排序 select from tablename order by customername collate chinese prc stroke ci as 2.資料庫加密 select encrypt 原始密碼 select pwdencrypt 原始密碼 select pwdco...

sql經典語句

說明 複製表 只複製結構,源表名 a 新錶名 b access可用 方法一 select into b from a where 1 1 方法二 select top 0 into b from a 注意 複製的新錶中的所有欄位都將沒有預設值,即使源表中有設預設值 說明 一條sql 語句搞定資料庫分...