SQL 設計小技巧--用 ISNULL 或 NVL 達到選擇性條件的下法

  • 41147
  • 0

SQL 設計小技巧--用 ISNULL 或 NVL 達到選擇性條件的下法

 

一個好用的技巧,是善用 ISNULL (MS SQL/T-SQL) 或 NVL (Oracle/PLSQL) 函式,它們的語法近似:

  • ISNULL(A, B)
  • NVL(A, B)

上面兩個式子,都代表著,若是 A 不等於 NULL,則傳回 A,否則傳回 B。

這個東西的有用之處,讓我們直接透過例子來解釋,把上面的查詢語句改為如下:

   --MS SQL
   select * from member where education = ISNULL(@education, education) and gender = ISNULL(@gender, gander)

   --Oracle
   select * from member where education = NVL(:education, education) and gender = NVL(:gender, gander)

類似這樣的式子,就可以解決我們所有的查詢組合情況。我們取出其中一段做分解說明:

   gender = ISNULL(@gender, gander)

@gender 代表查詢參數,當 @gender 未設定查詢條件時,我們讓他預設值為 NULL,結果 gender = ISNULL(NULL, gander) 就變成 gender = gender,而這個條件總是成立,所以就等於沒下這個條件。反之,或 gender 設定為 'F' 時,gender = ISNULL('F', gander) 就變成 gender = 'F',如此一來,就只會查詢出性別為 F 的會員資料。

基於這一原理,即使你的查詢條件有 20 個、30 個,你也不用再費心思索如何組裝查詢條件了

 

以上內容參考:http://isong.blogspot.com/2009/03/sql-isnull-nvl.html

文章簽名檔