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

SQL Server 中数据类型怎么实现隐式转换

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

SQL Server 中数据类型怎么实现隐式转换

本篇文章为大家展示了SQL Server 中数据类型怎么实现隐式转换,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

如下所示:

 CREATE TABLE TEST(  ID INT,  GOOD_TYPE VARCHAR(12), GOOD_WEIGHT NUMERIC(18,2))INSERT INTO dbo.TESTVALUES( 1, 'T1',1.27) SELECT GOOD_TYPE,  CASE WHEN ( GOOD_TYPE = 'T1' ) THEN 99.1 + SUM(GOOD_WEIGHT)    ELSE CEILING(SUM(GOOD_WEIGHT))  END AS GrossWeight ,  SUM(GOOD_WEIGHT) AS NetWeightFROM dbo.TESTGROUP BY GOOD_TYPE;

如上所示,为什么99.1 + SUM(GOOD_WEIGHT)变成100了呢? 原始SQL非常复杂,我们分析、排除掉各个因素后,始终不得要领,各种折腾中发现,如果这样转换一下(请见下面截图),居然就OK了,后面分析了一下,应该是CASE WHEN里面的不同数据类型导致隐式转换,说实话之前还真没有留意CASE WHEN中存在数据类型的隐性转换,但是为什么就一定从NUMERIC转换为INT了呢? 而不是INT隐性转换为NUMERIC呢, 说实话没有看到相关文档的官方,如果按照官方文档:

当两个不同数据类型的表达式用运算符组合后,优先级较低的数据类型首先转换为优先级较高的数据类型。 如果此转换不是所支持的隐式转换,则返回错误。 对于组合具有相同数据类型的操作数表达式的运算符时,运算的结果便为该数据类型

而我们知道,Decimal NUMERIC 是同义词,可互换使用,而官方文档“数据类型优先级 (Transact-SQL)”中,Decimal的优先级明显高于INT,如果真要按照原理来解释,应该是INT转换NUMERIC才对(两种数据类型支持隐式转换),所以越想越糊涂,只知道有这么一回事,但是真正的Root Cause尚不清楚,而且在精确度要求较高的报表中,这种现象就会类似Bug一样的突然出现。需要谨慎留心!

上述内容就是SQL Server 中数据类型怎么实现隐式转换,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

免责声明:

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

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

SQL Server 中数据类型怎么实现隐式转换

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

下载Word文档

猜你喜欢

Oracle中如何实现隐式数据类型转换

这篇文章主要介绍Oracle中如何实现隐式数据类型转换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!隐式数据类型转换 如果可能,可以将数据类型与函数所需参数的数据类型不相符的值隐式转换为所需的格式。V
2023-06-03

PHP类型的隐式转换怎么实现

本篇内容主要讲解“PHP类型的隐式转换怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP类型的隐式转换怎么实现”吧!一、基本数据类型在PHP中,基本数据类型有四种,分别是整型(int)
2023-07-05

JavaScrip简单数据类型隐式转换的实现

本文主要介绍了JavaScrip简单数据类型隐式转换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-20

JavaScrip简单数据类型隐式转换如何实现

今天小编给大家分享的是JavaScrip简单数据类型隐式转换如何实现,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。总结JavaScript是一种弱数据类型语言 ,在JavaScrip
2023-07-06

sql server中的数据类型转换cast与convert

注意点: 1、CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作。如: SELECT CAST("12.5" AS decimal) 结果是一个整数值:12 如果通过CAST()函数将这个值转换为decimal类型,需要定义decimal值的
sql server中的数据类型转换cast与convert
2014-07-20

PL/SQL中的数据类型怎么转换

在 PL/SQL 中,数据类型之间可以通过以下方式进行转换:使用隐式转换:在某些情况下,PL/SQL 可以自动将一种数据类型转换为另一种数据类型,例如将字符型数据转换为数值型数据,或将日期型数据转换为字符型数据。使用显式转换函数:如果需要进
PL/SQL中的数据类型怎么转换
2024-05-07

SQL中CAST()实例之转换数据类型

目录1.CAST()的语法及用法(1)语法:CAST(Expres编程客栈sion AS Data_type)(2)用法:2.CAST()的实例(1)将文本(字符串)时间转为日期格式,获取日期格式的字段(2)与其它语法进行结合使用,比如Wh
2023-01-13

C#中怎么实现隐式转换

C#中怎么实现隐式转换,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#隐式转换Java 和 C# 遵守相似的数据类型自动转换和强制转换规则。同 Java 一样,C# 既支持隐
2023-06-17

C++中怎么实现隐式转换

C++中怎么实现隐式转换,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C++隐式转换发生在四种情况下* 在混合类型的算术表达式中int ival = 3; double dv
2023-06-17

java怎么实现数据类型的转换

在Java中,可以使用类型转换操作符将一种数据类型转换成另一种数据类型。类型转换分为两种:隐式类型转换和显式类型转换。1. 隐式类型转换:当将一个小范围的数据类型转换为一个大范围的数据类型时,Java会自动进行类型转换。例如,将一个整数类型
2023-10-09

Java中怎么实现基本数据类型转换

这期内容当中小编将会给大家带来有关Java中怎么实现基本数据类型转换,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。自动类型转换自动类型转换是指:数字表示范围小的数据类型可以自动转换成范围大的数据类型。如:
2023-06-17

怎么避免sql中数据类型转换错误

使用正确的数据类型:确保在创建表时,为每个字段选择正确的数据类型,如整数、字符、日期等。这样可以减少在插入或查询数据时发生类型转换错误的可能性。使用参数化查询:在编写SQL语句时,应该尽量使用参数化查询而不是直接将变量值直接拼接到SQL语句
怎么避免sql中数据类型转换错误
2024-04-09

编程热搜

目录