开发者

SQL Server ISNULL 不生效原因及解决

开发者 https://www.devze.com 2022-12-13 11:40 出处:网络 作者: liangM_chen
目录SQL Server ISNULL 不生效原因问题原因解决方法SQL Server ISNULL 真是个坑,CPU飙升90% +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则不生http://www.devze.com效。

    解决方法

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

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

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

    IF EXISTS (
     SELECT
      ISNULL(historyval, 0.0)
     FROM
      ce_bf_l_ene编程客栈rgyh_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

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

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

    修改为 :开发者_数据库教程aa.fanCode IS NOT NULL  后CPU回到个位数。

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

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

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号