zoukankan      html  css  js  c++  java
  • oracle decode()函数的参数原来可以为sql语句!

    1.情景展示

      判断某个字段的值,如果以APP开头,需查询APP表里对应的数据;如果是以JG开头,就查询机构对应的表。

    2.原因分析

      如果使用CASE WHEN THEN或者IF ELSIF 太麻烦,可以通过decode()函数实现哦。

    语法说明:

      DECODE(VALUE,IF1,THEN1,IF2,THEN2,ELSE) 是对CASE WHEN 的简化 

      我们对于decode()函数的应用一般是这样的

    SELECT decode(t.medstepcode,
                  '010101',
                  '挂号',
                  '010102',
                  '诊断',
                  '010103',
                  '取药',
                  '010104',
                  '检查',
                  '010105',
                  '收费',
                  '010106',
                  '开方',
                  '010107',
                  '手术',
                  '000000',
                  '其他',
                  '挂号') medStepName /* 诊疗环节名称 */
      FROM VIRTUAL_CARDLOG T
    

      这样,查询结果会将对应的数字字符串替换文字。

    3.解决方案

      错误用法:直接跟sql

      结果执行报错。

      正确用法:sql需要用括号包住即可。

    SELECT to_char(t.logtime, 'yyyyMMdd-HH24mmss') time /* 用卡时间 */,
           '0' cardType, /* 电子健康卡 */
           t2.id_card atr, /* 身份证号 */
           t2.identifier issueOrgCode, /* 发卡机构代码 */
           (decode(instr(t2.identifier, 'APP'),
                   0, /* 不是以APP开头 */
                   (select t3.orgname
                      from org_access t3 /* 接入机构 */
                     where t3.id = t2.identifier),
                   (select t4.appname
                      from app_access t4 /* 接入APP */
                     where t4.id = t2.identifier))) issueOrgName /* 发卡机构名称 */
      FROM VIRTUAL_CARDLOG T, VIRTUAL_CARD T2
     WHERE T.VIRTUAL_ID = T2.ID
    

      说明:instr()函数是判断某个字符串内是否包含指定字符串,在这里不影响判断。

    4.结果展示

      说明:虽然decode()可以使用sql语句,但也仅限于该SQL的查询结果只能返回一个值,否则就会报错。

    写在最后

      哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

     相关推荐:

  • 相关阅读:
    CUDA并行算法系列之FFT快速卷积
    CUDA并行算法系列之规约
    混合语言编程:启用CLR(公共语言运行时编译)让C#调用C++
    【CUDA并行程序设计系列(4)】CUDA内存
    【CUDA并行程序设计系列(3)】CUDA线程模型
    【CUDA并行程序设计系列(2)】CUDA简介及CUDA初步编程
    【CUDA并行程序设计系列(1)】GPU技术简介
    关于CUDA的一些学习资料
    MacOS 快捷键技巧
    chrom 自带截屏用法
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/10579845.html
Copyright © 2011-2022 走看看