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用途的具体内容,更多请关注百分百源码网其它相关文章!