首頁  >  文章  >  資料庫  >  case when用法

case when用法

王林
王林原創
2019-09-23 13:14:1415873瀏覽

case when用法

資料庫的case when關鍵字,其實就是類似if,else if,else的這一種格式,是取得判斷條件的一種方式

在預存程序中和平時寫的sql其語法格式是基本上一致的,case when的用法呼叫也是。

先行舉例:

select qzh from ywda_swjg_qzh_dz
where swjg = (
select
case when substr('11101823000'),0,7) = '1110182'
then substr('11101960000',0,8) || '000'
else substr('1110196000',0,7) || '0000'
end
swjgdm from ywda_swjg_qzh_dz
where a.swjg_dm = b.swjg_dm);

case when 不僅可以在查詢的結果中使用,同樣可以在where條件之後做判斷條件使用。

這一條sql把兩種情況都囊括在其中了,當然我們也可以不用在後方的where條件中加入select,如:

select qzh from ywda_swjg_qzh_dz
where swjg =
case when substr('11101823000'),0,7) = '1110182'
then substr('11101960000',0,8) || '000'
else substr('1110196000',0,7) || '0000'
end;

這種格式直接用case when 的方式效率肯定還是比較高的。

注意:case when必須配合then 以及end來進行使用。

當然,我的預存程序沒有這麼寫,今天老大發話,說不用太負責,直接if,else這種格式書寫就可以了。

預存程序的if,else和前後台用的if以及else格式還是有點不一樣的,公司沒外網,純手打,咱就不貼java程式碼了,直接上預存程序的部分內容。

if substr(AVC_QXSWJG,0,8) = '11100006' or substr(AVC_QXSWJG,0,7) = '1110182' then
select qzh into avc_qch from ywda_swjg_qzh_dz where swjg_dm = substr(avc_qxswjg,0,8) || '000';
elsif    条件(不加括号) then
................................sql省略.........................................
else
.................................sql省略.......................................
end if;
sql结束。

注意,邏輯運算子在這裡採用sql的邏輯運算符,即and,or這一類。

上方寫的「||」是在欄位後方追加字串,不是邏輯或,要注意。

在if結束之後,一定要加end if來表示目前if結束。

推薦教學:mysql影片教學

#

以上是case when用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn