• Oracle在Logstash需求中碰到的问题处理方式


    Oracle对空值(NULL)的5种处理

    • 在公司Logstash相关需求中,为了方便sql语句更加简洁,所以需要使用到Oracle中的视图,在视图创建过程中,遇到有关对Null值的处理,这里做一个整理,方便日后查询

    COALESCE函数

    • COALESCE(expr1,expr2,expr3,…)函数接受一个输入参数的列表,返回第1个非空的参数。如果所有的参数都为空,则返回空值。
      • 判断expr1参数是否为空,不为空返回expr1,否则判断expr2参数是否为空,不为空返回expr2,否则判断expr3参数是否为空,不为空返回expr3…

    NULLIF函数

    • NULLIF(expr1,expr2)函数接受两个输入参数,如果第1个参数等于第2个参数,返回空值;否则,返回第1个参数的值

    CASE表达式

    --查询部门ID为2的部门员工全年收入(包括工资和奖金)
    SELECT t.emp_name,
      t.salary AS "工资",
      t.bonus AS "奖金",
      CASE WHEN t.bonus IS NULL THEN t.salary*12 
           ELSE  t.salary*12 + t.bonus 
      END AS "全年收入"    
    FROM employee t WHERE t.dept_id=2;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    NVL(expr1,expr2)函数

    • NVL(expr1,expr2)函数返回第1个非空的参数值,等价于只有两个参数的COALESCE函数

    NVL2(expr1,expr2,expr3)函数

    • NVL2(expr1,expr2,expr3)函数包含3个参数,如果第1个参数不为空,返回第2个参数的值;否则,返回第3个参数的值。

    Oracle拼接

    使用||

    • Oracle 拼接两个字段,并且中间使用 特殊字符进行拼接
     select 字段1|| '-' || 字段2 AS '字段名' FROM 表名
    
    • 1

    使用wm_concat

    Oracle wm_concat()函数 - 浅雨凉 - 博客园 (cnblogs.com)

    oracle中使用wm_concat函数的方法及弊端(解决办法)_阿呆观月的博客-CSDN博客

    Oracle的decode函数

    用法

    用法一

    decode(条件,1,返回值1,2,返回值2,…值n,返回值n,缺省值)
    
    • 1

    解释:条件满足值1,则返回值1,满足值2,则返回值2,以此类推

    用法二

    decode(字段或字段的运算,值1,值2,值3)
    
    • 1

    解释:这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3

    应用举例

    • 翻译值
    --Oracle
    select t.id,
           t.name,
           t.age,
           decode(t.sex, '1', '男生', '2', '女生', '其他') as sex
      from STUDENT2 t
      
    --MySql
    select t.id,
    	   t.name,
    	   t.age,
    	   if(t.sex ='1','男生',
             if(t.sex='2','女生','其他')) as sex
    from STUDENT2 t
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 比较大小
    --Oracle
    select t.id,
           t.name,
           t.age,
           decode(sign(t.age - 20),
                  1,
                  '20以上',
                  -1,
                  '20以下',
                  0,
                  '正好20',
                  '未知') as sex
      from STUDENT2 t
      
     --MySql
    select t.id,
           t.name,
           t.age,
           if(t.age-20>0,'20以上',(
    				 if(t.age-20<0,'20以下',
            	if(t.age-20=0,'正好20','未知')))) as sex
      from STUDENT2 t
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 搜索字符串
    --Oracle
    select t.id,
           decode(instr(t.name, '三'), 0, '姓名不含有三', '姓名含有三') as name,
           t.age,
           t.sex
      from STUDENT2 t
    
    --MySql
    select t.id,
           if(instr(t.name, '三')=0,'姓名不含有三', '姓名含有三') as name,
           t.age,
           t.sex
      from STUDENT2 t
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • decode分段
    select name,
           sal,
           decode(sign(sal - 5000),
                  1,
                  '高薪',
                  0,
                  '高薪',
                  -1,
                  decode(sign(sal - 3000), 1, '中等', 0, '中等', -1, '低薪')) as salname
      from person;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 判断是否为空
    select t.id,
           t.name,
           t.age,
           decode(t.sex,NULL,'暂无数据',t.sex) as sex
      from STUDENT2 t
    
    • 1
    • 2
    • 3
    • 4
    • 5

    实际应用

    ||和nvl2结合使用

    在这里插入图片描述

    结构图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5wgX6KZG-1669089272073)(C:\Users\Ausware01\AppData\Roaming\Typora\typora-user-images\image-20221122113317783.png)]

    ||和nvl和decode结合使用

    在这里插入图片描述

    结构图

    在这里插入图片描述

  • 相关阅读:
    HTML+CSS网页设计期末课程大作业 【茶叶文化网站设计题材】web前端开发技术 web课程设计 网页规划与设计
    系统架构设计师(第二版)学习笔记----系统架构概述
    集合Set
    Linux上编译和安装SOFA23.06
    康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(三)
    数据库监控:关键指标和注意事项
    PlantUML——类图(持续更新)
    Apache Hop Pipeline Transforms【持续完善中】
    L1W3 用1层隐藏层的神经网络分类二维数据
    防范与解决.faust勒索病毒:恢复数据文件与预防方法
  • 原文地址:https://blog.csdn.net/qq_44447372/article/details/127980095