将null值转化为其他值

将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;  

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容