SQL Server ISNULL 不生效原因及解决

目录
  • SQL Server ISNULL 不生效原因
    • 问题
    • 原因
    • 解决方法
  • SQL Server ISNULL 真是个坑,CPU飙升90% +

SQL Server ISNULL 不生效原因

数据库:SQL Server 2008 R2

原始SQL:historyval 字段没有数据显示为NULL,用ISNULL判断为NULL的时候替换为 0.0

SELECT
    ISNULL(historyval, 0.0)
FROM
    ce_bf_l_energyh_t_2
WHERE
    tagname = '123'

问题

用ISNULL只后数据依旧为NULL并没有替换掉。

原因

ISNULL只作用于查询出数据后字段为NULL可以替换生效、如果查询的时候这条数据本身为NULL、字段替换时ISNULL则不生效。

解决方法

先用 if exists(结果集)判断这条数据是否存在(也就是说这条select这条sql有没有结果集),BEGIN 表示语句块的开始;END 表示语句块的结束(加不加 BEGIN  END 代码块都可以)。

如果满足条件直接在下方写 SQL。

不满足条件时,则在 ELSE 下方写 SQL。如此,数据进行了替换。

IF EXISTS (
    SELECT
        ISNULL(historyval, 0.0)
    FROM
        ce_bf_l_energyh_t_2
    WHERE
        tagname = '123'
)
BEGIN
    --如果存在
    SELECT
        ISNULL(historyval, 0.0)
    FROM
        ce_bf_l_energyh_t_2
    WHERE
        tagname = '123'
    END
    ELSE
 
    BEGIN
        --如果不存在
        SELECT
            0.0
        END

SQL Server ISNULL 真是个坑,CPU飙升90% +

  • table1大概1100多万数据
  • table2大概80多万数据

MES系统,使用了以下SQL语句,并且这个语句每分钟终端会并发执行一次(大概30个客户端)

SELECT
    AA.id 
FROM
   table1 aa
    LEFT JOIN table2  bb ON bb.No= aa.No 
WHERE

--就下面这句,把服务器CPU干到90%多

isnull( aa.fanCode,'0')!='0' 

修改为 :aa.fanCode IS NOT NULL  后CPU回到个位数。

总结:尽量少用isnull()函数,就算用也尽量不用在where后面。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

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

    有如下查询: 复制代码 代码如下: select isnull(lastchanged,'') as lastchanged from vhhostlist where s_comment='test202' 本来,ISNULL函数只有一个参数,它表示的含义就是判断这个参数的值是否为NULL,是NULL则返回TRUE,否则返回FALSE: 但是,在SQLServer的查询语句中,isnull需要两个参数,它的含义是如果参数1为NULL,则以参数2为isnull函数的返回值: 即,上面查询的的含义

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

    isnull在数据库查询中的应用,特别是再语句连接的时候需要用到 比如连接时候,某个字段没有值但是又要左连接到其他表上 就会显示空, isnull可以判断是否是NULL,如果是给个默认值 isnull("字段名","默认的数据") SqlServer中的null值与IsNull函数NULL 值的三大特点,分别是:1)NULL值不参加统计:2)NULL值不进入计算表达式:3)不能与其它值进行比较. 所谓NULL值不参加统计 即 在使用统计函数时,凡是涉及到 NULL值

  • SQL中的ISNULL函数使用介绍

    ISNULL 使用指定的替换值替换 NULL. 语法 ISNULL ( check_expression , replacement_value ) 参数 check_expression 将被检查是否为 NULL的表达式.check_expression 可以是任何类型的. replacement_value 在 check_expression 为 NULL时将返回的表达式.replacement_value 必须与 check_expresssion 具有相同的类型. 返回类型 返回与 c

  • MySql中 is Null段判断无效和IFNULL()失效的解决方案

    MySql Null字段判断,和IFNULL失效的处理 ps:(不想看过程就直接把你的sql外边加上 一个select就好了) select a,b,c from table group by a,b,c //这时候a,b,c 如果判断null不管用 select IFNULL(a,0),IFNULL(b,0),IFNULL(3,0) from (select a,b,c from table group by a,b,c ) //这样就好啦 不说废话举个栗子,首先看一下这个很简单的表 当我使用

  • SQL Server ISNULL 不生效原因及解决

    目录 SQL Server ISNULL 不生效原因 问题 原因 解决方法 SQL Server ISNULL 真是个坑,CPU飙升90% + SQL Server ISNULL 不生效原因 数据库:SQL Server 2008 R2 原始SQL:historyval 字段没有数据显示为NULL,用ISNULL判断为NULL的时候替换为 0.0 SELECT     ISNULL(historyval, 0.0) FROM     ce_bf_l_energyh_t_2 WHERE     t

  • sql server 2008数据库无法启动的解决办法(图文教程)

    事故起因: 之前使用SQL Server2008+VS2010开发,安装VS2012后数据库忽然无法连接 发现SQL Server配置管理器显示远程过程调试失败 原因&对策: VS2012中自带的Local DB和Server2008冲突 在添加和删除程序中删除"Microsoft SQL Server 2012Local DB"后问题应该解决 祸不单行: 远程过程调试失败后出现了"请求失败或服务未及时响应",服务仍旧无法启动 数据库服务无法启动的常见原因:

  • SQL Server 2008 R2登录失败的解决方法

    为大家分享SQL Server 2008 R2登录失败的解决方法 1.启动SQL Server 2008 Management Studio,会看到 2.里面有一个 身份验证.这个 身份验证 的下拉列表里面有两个选项: Windows 身份验证 和 SQL Server 身份验证. 它们有什么区别: Windows 身份验证是指:你可以使用你电脑Windows系统的用户名和密码进行登入.如果你的电脑没有设置密码,那么就不需要输入用户名和密码,直接点击连接就可以登入. 我们一般使用第二种身份验证:

  • 微信小程序中hidden不生效原因的解决办法

    微信小程序中hidden不生效原因的解决办法 例如如下布局: <view hidden="true" style="display:flex;flex-direction: row;"> <text>text1</text> <text>text2</text> </view> 你会发现hidden没生效.经我实验发现hidden元素对块状布局才生效,所以这段代码里导致hidden没生效的罪魁祸

  • SQL Server出现System.OutOfMemoryException异常的解决方法

    今天在用SQL Server 2008执行一个SQL脚本文件时,老是出现引发类型为"System.OutOfMemoryException"的异常错误,脚本明明是从SQL Server 2008导出的,应该不会出错,研究了好久问题才得以解决. 出现这个错误的主要原因是由于SQL脚本文件太大,估计超过了100M了,解决方法就是把脚本文件分成几个脚本文件,分别去执行即可. 来自微软官方的解决方案: 原因: 因为计算机没有足够的内存来完成请求的操作,则会出现此问题. 在 SQL Server

  • SQL Server无法生成FRunCM线程的解决方法

    SQL Server 无法生成 FRunCM 线程.数据库错误日志如下: 复制代码 代码如下: 2013-09-26 21:21:50.31 Server      Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft CorporationEnterprise Edition on Windows NT 5.2 (Build 3790:

  • win2008 r2 安装sql server 2005/2008 无法连接服务器解决方法

    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. 在使用G2服务时,测试服务器连接,结果遇到这个问题. 问题详细:连接测试失败!:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: 命名管道提供程序, error: 40 - 无法打开到

  • jsp 连接sql server 2008 连接不上的解决方法

    1.首先是如果你遇到javax.servlet.ServletException: java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver这个错误, 那么估计你应该把Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 改成Class.forName("com.microsoft.sqlserver.jd

  • 在SQL Server中实现最短路径搜索的解决方法

    开始这是去年的问题了,今天在整理邮件的时候才发现这个问题,感觉顶有意思的,特记录下来. 在表RelationGraph中,有三个字段(ID,Node,RelatedNode),其中Node和RelatedNode两个字段描述两个节点的连接关系:现在要求,找出从节点"p"至节点"j",最短路径(即经过的节点最少). 图1. 解析: 了能够更好的描述表RelationGraph中字段Node和 RelatedNode的关系,我在这里特意使用一个图形来描述,如图2. 图2

  • SQL Server 2000“设备激活错误”的解决方法

    数据库中对数据的操作是一大重要技能,其中,数据的恢复和还原也是常做的事.不知你是否在数据库恢复时遇到诸如"设备激活错误,请使用with move选项来标志该文件的有效位置"的错误信息提示?不知你在还遇到这样的情况:还原数据库时, 发现在企业管理器中,操作:所有任务-->还原数据库-->选择"从设备"还原,找到备份文档路径,强制还原.报错:设备激活错误,请使用with move选项来标志该文件的有效位置.本文将为你讲解出现这个错误应如何解决. 解决方法:右

随机推荐