sql – 操作数数据类型NULL对于max运算符无效
发布时间:2020-05-24 10:54:08 所属栏目:MsSql 来源:互联网
导读:这段代码工作正常: select fk, max(case when 1 = 0 then 1 else null end) maxx from (values(1, null), (1, null)) x(fk, a) group by fk; 输出: fk maxx----------- -----------1 NULL 有: 警告
|
这段代码工作正常: select fk,max(case when 1 = 0 then 1 else null end) maxx
from (values(1,null),(1,null)) x(fk,a)
group by fk;
输出: fk maxx ----------- ----------- 1 NULL 有: 警告:聚合或其他SET操作消除了空值. 但是这段代码: select fk,max(a) maxx
from (values(1,a)
group by fk;
给出错误: Msg 8117,Level 16,State 1,Line 5 在这两种情况下,sql server从null和null计算max?不是吗? 解决方法在第一种情况下,您隐式指定数据类型,即整数.这是从那时永远无法达到的推断.对于sql server来说,当时不会被执行的事实并不重要. In fact,sql server确定返回类型的方式:“result_expressions中的类型集合中最高的 precedence类型和可选的else_result_expression”.因此,在实际执行之前选择返回类型,从then和else返回的所有潜在数据类型中选择.换句话说,在sql server’实现’之前,有些语句不可能达到.由于数据类型是已知的,因此可以应用max. 在第二种情况下,您没有指定数据类型,因此sql server无法知道如何实现max. varchar的max与整数的max不同. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SQL Server 无法验证产品密匙的完美解决方案
- winXP系统安装SQLServer2005开发版具体过程与注意问题
- sql – Flex匹配许多数据库记录(类似Quicksilver或类似Laun
- MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的
- sql – 使用带有CRLF或LF的SSIS读取文本文件
- sql-server-express – 启用了FILESTREAM的列会影响SQL Ser
- 用于组中任何非特定值的SQL聚合函数
- SQL Server 一个SQL语句获得某人参与的帖子及在该帖得分总和
- SQL Server 2000安全配置详解
- 如何在纯SQL中编写一个null安全比较“=”?
