我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQL Server ISNULL 不生效原因及解决

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQL Server ISNULL 不生效原因及解决

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后面。 

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQL Server ISNULL 不生效原因及解决

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL sql_mode修改不生效的原因及解决

前言近期多次聊到sql_mode的话题,也是多次遇到相关问题,今天就趁热打铁,再给大家带来一个sql_mode的案例分享。 场景模拟基于业务敏感性的考虑,下面涉及的表、存储过程等均非真实数据,但并不影响排查过程。 (1)客户侧开发童鞋创建了
2022-05-25

Springboot中yml文件不生效原因分析及解决

Springboot中yml文件不生效常见原因包括:文件路径错误、语法错误、配置文件未加载、属性冲突、环境变量覆盖、注解覆盖等。解决方案涉及检查文件路径、修复语法错误、检查配置文件加载、解决属性冲突、忽略环境变量、检查注解覆盖等。同时,可以利用@ConfigurationProperties、@Value、SpringApplication.setDefaultProperties方法进行配置。若上述方法无效,可使用IDE调试、启用debug日志、检查日志、寻求社区或专业帮助等方式解决问题。
Springboot中yml文件不生效原因分析及解决
2024-04-02

解读resetFields()不生效的原因

这篇文章主要介绍了解读resetFields()不生效的原因,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-17

SQL Server中.BAK 文件损坏的原因及解决方法

目录SQL Server 中 .BAK 文件损坏的常见原因恢复损坏的 .bak 文件的可靠解决方案鸿萌数据恢复服务SQL Server 中 .BAK 文件损坏的常见原因以下是一些可能导致 SQL Server 中 .bak 文件损坏的原因
SQL Server中.BAK 文件损坏的原因及解决方法
2024-08-14

SQL SERVER数据转换失败的原因及解决方法

目录SQL SERVER 转换失败原因分析解决方法错误处理示例代码:处理CSV文件导入到SQL Server中的数据转换失败问题示例代码:电子商务网站商品推荐功能结论SQL SERVER 转换失败在使用 SQL Server 数据库过程中
SQL SERVER数据转换失败的原因及解决方法
2024-09-22

vue中@click绑定事件点击不生效的原因及解决方案

根据Vue2.0官方文档关于父子组件通讯的原则,父组件通过prop传递数据给子组件,子组件触发事件给父组件,这篇文章主要介绍了vue中@click绑定事件点击不生效的解决方案,需要的朋友可以参考下
2022-12-08

Vue动态设置图片时src不生效的原因及解决方法

这篇文章主要介绍了Vue动态设置图片时src不生效的原因及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

tomcat修改server不生效如何解决

如果修改了Tomcat的server.xml文件,但修改不生效,可能是由于以下原因:1. 未重启Tomcat:在修改server.xml文件后,需要重启Tomcat才能使修改生效。尝试重新启动Tomcat服务器。2. 修改位置错误:确认已在
2023-09-23

MySQL索引失效原因以及SQL查询语句不走索引原因详解

目录前言1. 隐式的类型转换,索引失效2. 查询条件包含 or,可能导致索引失效3. like 通配符可能导致索引失效4. 查询条件不满足联合索引的最左匹配原则5. 在索引列login_time上使用 mysql 的内置函数6. 对索引列a
2023-03-06

sql while不能用的原因及解决方法是什么

在SQL中,不存在while循环,而是使用迭代和递归来实现循环逻辑。因此,如果想要使用类似于while循环的功能,可以通过以下方法实现:使用递归:通过递归函数来模拟while循环的功能,即在函数内部调用自身来实现循环逻辑。使用游标:在存储过
sql while不能用的原因及解决方法是什么
2024-04-09

sql表对象无效的原因及解决方法是什么

SQL表对象无效的原因可能有以下几种:1. 表对象不存在:如果使用的表对象在数据库中不存在,就会导致无效。可能是表名拼写错误或者表在数据库中被删除了。2. 表对象被锁定:如果另一个会话或事务正在使用该表对象,会导致无效。可以等待锁释放或者联
2023-08-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录