`
EdgenHuang
  • 浏览: 109552 次
  • 性别: Icon_minigender_1
  • 来自: 福建泉州
社区版块
存档分类
最新评论

IsNull 和 NullIf 双剑合璧

    博客分类:
  • DB
阅读更多
    首先看看SQL SERVER 联机丛书的信息,其中我们该注意的地方我用红字标出:

ISNULL

使用指定的替换值替换 NULL
语法
ISNULL ( check_expression , replacement_value )
参数
check_expression
将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。
replacement_value
check_expression NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型
返回类型
返回与 check_expression 相同的类型
注释
如果 check_expression 不为 NULL,那么返回该表达式的值;否则返回 replacement_value
 

NULLIF

如果两个指定的表达式相等,则返回空值。
语法
NULLIF ( expression , expression )
参数
expression
常量、列名、函数、子查询或算术运算符、按位运算符以及字符串运算符的任意组合。
返回类型
返回类型与第一个 expression 相同
如果两个表达式不相等,NULLIF 返回第一个 expression 的值。如果相等,NULLIF 返回第一个 expression 类型的空值
注释
如果两个表达式相等且结果表达式为 NULLNULLIF 等价于 CASE 的搜索函数
 
从以上的红字信息我们可以发现:
 
    1、两个函数的返回值都是特定类型的,就算是空值,也是特定类型的,也就是说是特定的数据类型长度(特别是字符串类型的长度)的。
 
    2、使用两个函数的组合可以让SQL代码精简并可替代Case语句
 
下面给出一些示例供大家参考,请大家在使用中注意:   
 SELECT HopeBe_0 = ISNULL(NULLIF('',''),0)
       --返回 *
       --说明:显然这里已经违反了 ISNULL 要求了(红字部分),
       --0转成字符串的长度为1,而''的长度为0
 
      SELECT HopeBe_0 = ISNULL(NULLIF(' ',' '),0) 
       --返回 0
       --说明:这里虽然已经违反了 ISNULL 要求了(红字部分),
       --但是0转成字符串的长度为1,而' '的长度为也为1
 
        SELECT HopeBe_Empty = ISNULL(ISNULL('',''),0) 
       --返回 ''
       --说明:这个可以理解吧
 
        SELECT HopeBe_n_0 = ISNULL(NULLIF('',''),'0000') 
       --返回 ''
       --说明:这个比较经典,请往下看
 
        SELECT HopeBe_n_0 = ISNULL(NULLIF('x','x'),'0000') 
       --返回 0
 
        SELECT HopeBe_n_0 = ISNULL(NULLIF('xx','xx'),'0000') 
       --返回 00
 
        SELECT HopeBe_n_0 = ISNULL(NULLIF('xxx','xxx'),'0000') 
       --返回 000
 
        SELECT HopeBe_n_0 = ISNULL(NULLIF('xxxx','xxxx'),'0000') 
       --返回 0000
 
        SELECT HopeBe_n_0 = ISNULL(NULLIF('xxxxx','xxxxx'),'0000') 
       --返回 0000
 
至于替代 case 的示例靠大家领会,我只给了我经常用的小片:
      ... IsNull(NullIf(count(ID),0),1)
      --说明:这是为了防止除0和除NULL
分享到:
评论

相关推荐

    深入SQLServer中ISNULL与NULLIF的使用详解

    在SQL Server中,ISNULL和NULLIF是两个非常重要的函数,它们主要用于处理NULL值,确保数据的完整性和一致性。在数据库操作中,NULL值经常会出现,尤其是在进行比较、计算或者查询时,理解并正确使用这两个函数是提升...

    MySQL里的IFNULL、NULLIF和ISNULL用法

    用到了MySql里的isnull才发现他和MSSQL里的还是有点区别,现在简单总结一下:  mysql中isnull,ifnull,nullif的用法如下:  isnull(expr) 的用法:如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。...

    MySql中的IFNULL、NULLIF和ISNULL用法详解

    本文将详细介绍三个用于处理NULL值的关键函数:IFNULL、NULLIF和ISNULL。 首先,`ISNULL()`函数用于检查一个表达式是否为NULL。如果expr是NULL,`ISNULL(expr)`返回1,否则返回0。例如: ```sql mysql> SELECT IS...

    ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数

    ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数的几种用法,

    mysql中null(IFNULL,COALESCE和NULLIF)相关知识点总结

    本文实例讲述了mysql中null(IFNULL,COALESCE和NULLIF)相关知识点。分享给大家供大家参考,具体如下: 在MySQL中,NULL值表示一个未知值,它不同于0或空字符串”,并且不等于它自身。 我们如果将NULL值与另一个...

    Java工具类

    public static boolean isNull(Object a) { String b = toString(a); return isNull(b); } public static boolean isNull(String a) { a = ("" + a).trim(); if (a == null || "".equals(a) || "null".equals...

    浅谈SQLServer的ISNULL函数与Mysql的IFNULL函数用法详解

    本文将深入探讨SQL Server的`ISNULL`函数和MySQL的`IFNULL`函数,帮助读者理解和掌握它们的用法。 **SQL Server的ISNULL函数** `ISNULL`函数在SQL Server中用于检查一个表达式是否为NULL,并根据需要替换为指定的...

    深入浅析Orcale的nvl函数和SQL Server的isnull函数

    总之,Oracle的NVL、NVL2和NULLIF以及SQL Server的ISNULL都是处理NULL值的关键函数。了解它们的差异和使用条件,有助于在不同数据库环境下编写更加灵活和适应性强的SQL代码。在实际开发中,选择哪个函数取决于具体...

    在SQL Server中使用ISNULL执行空值判断查询

    在SQL Server中,ISNULL()...在编写SQL查询和与数据库交互的任何地方,理解并正确使用ISNULL()都是提高代码质量、避免潜在错误的重要技巧。无论是简单的数据展示还是复杂的业务逻辑,ISNULL()都是一个不可或缺的工具。

    SQLSERVER ISNULL 函数与判断值是否为空的sql语句

    在这种情况下,`ISNULL()`函数可以用来检查并替换这些空值,以确保数据的完整性和一致性。 `ISNULL()`函数的语法结构如下: ```sql ISNULL ( check_expression , replacement_value ) ``` 这里的参数: - `check_...

    Python pandas库中的isnull()详解

    总之,Python pandas库中的`isnull()`函数是检测和处理缺失值的核心工具。它能帮助我们快速定位数据中的空值,结合`any()`和`sum()`等其他函数,我们可以进一步了解数据的完整性,从而为后续的数据清洗和分析打下...

    lotus domino 开发资料 IsEmpty isnull等 版权

    本文将深入探讨`IsEmpty`、`IsNull`以及`IsArray`等函数的用法,并结合`IsDate`和`IsNumeric`来讨论数据类型的判断。 首先,`IsEmpty`函数用于检查变量是否已初始化或赋值。在示例中,如果`Dim v As Variant`后的`v...

    sqlserver isnull在数据库查询中的应用

    总的来说,理解并熟练运用`ISNULL`函数对于在SQL Server中处理含有NULL值的数据至关重要,它可以避免因NULL值引起的计算错误和统计异常,提高查询和更新的准确性。在编写涉及NULL值的查询时,考虑使用`ISNULL`以确保...

    oraclesql判断值为空-Oracle-sqlserver的空值(null)判断.pdf

    Oracle SQL 判断值为空OrNull 判断 Oracle SQL 中判断值为空...在 Oracle 和 SQL Server 中,我们可以使用 `NVL` 和 `ISNULL` 函数来判断值为空或 Null,並使用 `isNull` 和 `is not null` 来判断值是否为空或 Null。

    mysql not in、left join、IS NULL、NOT EXISTS 效率问题记录

    MySQL中的`NOT IN`, `LEFT JOIN`, `IS NULL`, 和 `NOT EXISTS` 是四种不同的SQL查询方式,它们在特定情况下可以实现相似的功能,但实际执行效率可能会有很大差异。本文主要探讨这四种方法在处理大数据量时的性能表现...

Global site tag (gtag.js) - Google Analytics