Oracle之decode函數

          說起來也是慚愧,decode函數這麼強大的功能竟然前段時間才接觸到。大概是平時疏忽掌握學習一些優秀的技術片段,從而於之失之交臂吧。

           前段時間在處理項目的某需求時有這麼一個情況:在對商品價格進行查找,一個商品存在多個檔次的價格,要求如果商品A檔次的價格沒有,則使用商品B檔次的價格,如果B檔次的價格也沒有,則使用改商品C檔次的價格。初步一看,很簡單的一個需求。很慚愧的是,我第一時間想到的是,直接select然後做if判斷。雖然這樣實現起來並沒有什麼問題,但是對於系統來說,要多次去調用數據庫的查詢方法。這只是3個檔次,假如有20個檔次,難道要寫20個select和if判斷嗎?造成大量的冗餘代碼不說,邏輯也會一不留神就出錯。

           在諮詢了某大牛同事之後,得到一個答案,因爲我們使用的orcale,所以可以用decode這個函數去實現,只需要在數據庫裏實現即可,系統僅執行一次查詢動作。

           可以這麼理解,decode是一個能夠實現重複查詢的函數。僅需要給予相應的查詢條件即可。decode語法如下:

           select  decode (字段,比較值,輸出值)  。

           根據我的業務需求,我可以這麼寫:

           select decode (A,decode(B,decode(C,如果C不存在,輸出C),輸出B),輸出A) ...後面跟上自己的連接語句或者查詢條件 。

           完工。。。。其實還是有個小問題,如果有N個檔次的時候,是否需要寫一個巨大的decode嵌套?

           

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章