Re: [SQL ] 2個參數的寫法??

看板Database作者 (justyes)時間15年前 (2010/12/15 23:56), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《daniel1205 (艾琳是我最愛的人!!)》之銘言: : ※ 引述《justyes (justyes)》之銘言: : : 目前遇到一個問題,原本只有一個參數寫法如下 : : and dfv.ATTRIBUTE1 in nvl(:P_MEA,dfv.ATTRIBUTE1) : : 但後來想再增加一個篩選條件,改寫如下 : : and dfv.ATTRIBUTE1 in (nvl(:P_MEA,dfv.ATTRIBUTE1),nvl(:P_MEA1,null)) : : 但測試時,值還是輸入出來 : : 不知小弟哪寫錯 : and dfv.ATTRIBUTE1 in (nvl(:P_MEA,dfv.ATTRIBUTE1),nvl(:P_MEA1,null)) : 等同於 : and ( dfv.ATTRIBUTE1 in (nvl(:P_MEA,dfv.ATTRIBUTE1)) : OR dfv.ATTRIBUTE1 in (nvl(:P_MEA1,null)) : ) : 如果你希望增加一個篩選條件, : 應該是加一個 AND 條件才對 : EX: : and dfv.ATTRIBUTE1 in nvl(:P_MEA,dfv.ATTRIBUTE1) : AND dfv.ATTRIBUTE1 = :P_MEA1 : 另外... : nvl(:P_MEA1,null) <-- 這樣的語法似乎有點詭異?? : ==> P_MEA1 如果是 NULL 的話, 就給他 NULL ... 囧 : 然後又把 NULL 丟去當 AND 條件.... <囧> 假如:P_MEA 有輸入參數 ==> 篩選條件就是:P_MEA :P_MEA1 沒有輸入參數 假如:P_MEA 沒有輸入參數 ==> 篩選條件就是dfv.ATTRIBUTE1 :P_MEA1 沒有輸入參數 假如:P_MEA 沒有輸入參數 ==> 篩選條件就是:P_MEA1 :P_MEA1 有輸入參數 假如:P_MEA 有輸入參數 ==> 輸出結果就是:P_MEA + :P_MEA1 :P_MEA1 有輸入參數 依照上述四種狀況才寫出 AND dfv.ATTRIBUTE1 IN (nvl(:P_MEA,dfv.ATTRIBUTE1),nvl(:P_MEA1,null)) 不過大大說的有理nvl(:P_MEA1,null))的確詭異 且第三種狀況似乎會有問題 這就是一直困擾的問題,無法嚴謹的寫出 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.1.43
文章代碼(AID): #1D2EKNyM (Database)
文章代碼(AID): #1D2EKNyM (Database)