程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> .Net 巧用COALESCE 動態組成 SQL 查詢條件

.Net 巧用COALESCE 動態組成 SQL 查詢條件

編輯:.NET實例教程
Hi, thanks for your continuous support to my blog!
Our topic today would be…. 對了,對了,這好像是中文博客哦,打住,打住
 
咳咳,大家應該都有聽說過 SQL 吧?嘿嘿,不知道的請面壁思過
大家都有用 Stored Procedure 吧,什麼?沒用過?面壁思過吧,hoho
 
那大家知道做數據庫處理程序,很大的一個要求就是組成不同的查詢表達式羅
之前一個很普遍也是很不好的做法就是 Dynamic SQL, 況且說是動態組成的 SQL 吧
隨便一個 Code 演示


a = “select * from abc where”
if xxx=xxx then
 a = a+ “ where b=3"
end if
 
這樣如果有 N 多 FIEld 要查詢那就是一堆了,不好看,也不好改
既然用了 Stored Procedure 就可以用 Parameter 拉,例如
 


abcAdapter.selectcommand.parameter(“b”).value = 3
而 Stored Proc 為


select * from abc where b=@b
 
這樣 Fill 的時候就會那個那個了,哈哈
 
現在的問題是, 當有多個選擇組合,而有些條件是要有,有些是沒得,而要動態的選擇,可不是就要專門一個 function 來 return 了吧,這樣多麻煩。。。。
現在有個好辦法,可不就是COALESCE,比如


select * from abc where b=COALECE(@b, b) and c=COALECE(@c,c)
 
而當輸入的時候



value1=5
value2=nothing
abcAdapter.selectcommand.parameter(“b”).value = value1
abcAdapter.selectcommand.parameter(“c”).value = value2
 
這樣的時候就只會用 b=value1 進行選擇
換句話說,COALECE 達到的目的就是當裡面某個數值是 Null 的時候就輸出第二個數值,不然就第一個數值
 
Anyway, 這篇寫的比較長了,希望大家看得懂,我的中文寫作水平還有待提高呢,望大家指點,指點。。。好像還沒評論呢。。。蠻多人看的耶 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved