iT邦幫忙

0

[資料庫] 學習筆記 - case when then 和 預存程序


前言

我是一名即將畢業的大學生,最近為了未來,正在與學長學習資料庫!
雖然說起來好像只是為了能有份工作,但在最近的學習過程中,發現我其實還蠻喜歡寫程式的/images/emoticon/emoticon42.gif
很後悔沒能早一點努力,但幸好還是跨出了這一步,希望能夠持續努力,永遠保持熱情!!


正文

未來會持續將學習到的知識整理到這發文,當成是學習的筆記
因為我是新手,所以如果有觀念不正確的地方,還希望能麻煩各位高手指教/images/emoticon/emoticon41.gif


今天要解的問題

一張表有5個欄位,每個欄位類型都為int ,值都是0
https://ithelp.ithome.com.tw/upload/images/20201219/20133638Y1mc9PLQqA.png

有一個參數 @i
如果@i = 1 修改A欄位為1
如果@i = 2 修改B欄位為1
如果@i = 3 修改C欄位為1
如果@i = 4 修改D欄位為1
如果@i = 5 修改E欄位為1

我一開始解這題時,還差點要做一個網站什麼的來讓適用者輸入參數,然後用if一個一個判斷XD
後來才知道原來可以用資料庫的預存程序以及CASE WHEN來寫,像這樣:
https://ithelp.ithome.com.tw/upload/images/20201219/20133638r57fFrIU4u.png
會用ALTER是因為我改過很多次了XD

但是這樣好像不夠好,於是我又學習到可以加入動態查詢的技巧來寫
一開始的想法是這樣:
https://ithelp.ithome.com.tw/upload/images/20201219/20133638cMFqR533QS.jpg
但這樣寫會跳出INT轉換失敗的訊息,苦惱了我很久

問了學長後才知道CASE WHEN可以用在變數上面,不用把動態加在CASE WHEN,所以最後改成:
https://ithelp.ithome.com.tw/upload/images/20201219/20133638DT6dRaqkKC.jpg

不知道各位高手是如何解這題的呢?
希望能夠交流一下想法/images/emoticon/emoticon41.gif


尚未有邦友留言

立即登入留言