美文网首页
将null值转化为其他值

将null值转化为其他值

作者: lumicinta | 来源:发表于2017-01-25 18:32 被阅读0次

将null值转化为其他值

标签(空格分隔): DB2 SQL


我个人认为数据库中不应该有null值,因为他颠覆了二值逻辑结构(即:真和假),出现了三值逻辑结构(即:真、假和未知)。由于null,我们的SQL语句很有可能出现意想不到的结果。此外null值和其他值进行数值运算的时候也会带来问题。但是,有时候有些事情并不是我们能够控制和改变的,作为一名真正的SQL开发者,应该敢于面对最垃圾的数据库设计。下面给大家介绍如何将null值转化为其他值。

有两个函数可以将null值转化为其它值:VALUECOALESCE,它们的使用方法和作用完全相同。

语法:coalesce(<field>,<target_value>)
语法:value(<field>,<target_value>)
例如:select coalesce(id,0) from <table_name>
例如:select value(id,0) from <table_name>
说明:如果id为null,则把它转化为0,否则的话不变。

考虑下面的情况:

CREATE TABLE
    USER
    (
        NAME VARCHAR(20) NOT NULL,---姓名
        SALARY1 FLOAT,---基本工资
        SALARY2 FLOAT---奖金
    ); 

假设你要查找总工资(基本工资+奖金)大于3000元的员工,我们很自然的会写出下面的语句:

SELECT
    NAME
FROM
    USER
WHERE
    SALARY1+SALARY2>3000;  

但是很不幸,这条语句并不是永远正确,当SALARY1或SALARY2有一个值是null的时候,我们很可能会漏掉部分数据(会漏掉哪些数据呢?朋友们自己思考一下),这就是我认为数据库中不应该有null值的原因,如果你不是决策者,无法改变数据库设计,我们可以这样写:

SELECT
    NAME
FROM
    USER
WHERE
    COALESCE(SALARY1,0)+COALESCE(SALARY2,0)>3000;

SELECT
    NAME
FROM
    USER
WHERE
    VALUE(SALARY1,0)+COALESCE(SALARY2,0)>3000;  

这样就可以保证查询出的结果就是我们想要的结果。

相关文章

  • 将null值转化为其他值

    将null值转化为其他值 标签(空格分隔): DB2 SQL 我个人认为数据库中不应该有null值,因为他颠覆了...

  • JS备注

    一、S中!!的作用 !!是将表达式强制转化为bool值的运算, NaN || undefined || null ...

  • String值判断

    判断String等于某值,比如 空("") 判断不等于某值(排除null,即 除null的其他值) 判断不等于某值...

  • 如何将NULL值映射到其他有意义的值

    在本教程中,您将了解如何将NULL值映射到其他有意义的值。在关系数据库理论中NULL的概念,它表示未知值或缺少信息...

  • JS数据类型详解

    一、布尔 Boolean() 把其他类型值转化为布尔类型只有0,NaN,空字符串,null,undefined这五...

  • 函数

    NUMERIC STRING 日期 转换函数 COLAESCE:将NULL转换为其他值 COALESCE 是 SQ...

  • 《JavaScript高级程序设计》学习(第六天)

    3.4.3Null类型 null值表示一个空对象指针。定义准备用于保存对象的值时最好将变量初始化为null 3.4...

  • Java中如何避免麻烦的null值判断(转载)

    null值判断以及空指针异常应该是我们在代码中经常遇到的。针对null值的处理有两种: (1)将null值替换为n...

  • Vue ant-design select滚动条跳动

    Vue ant-design下拉框select如果有null值,会出现跳动 将null值过滤掉即可

  • 操作符(单个Observable)

    一、just 将一个元素转化为Observable 二、from 将其他值类型(int,array等)转化为Obs...

网友评论

      本文标题:将null值转化为其他值

      本文链接:https://www.haomeiwen.com/subject/hvztittx.html