我尝试了下面的查询
DECLARE @Input INT = 300
DECLARE @Ouput TINYINT
SET @Ouput = @Input
SELECT @Ouput
在执行上述语句时,我收到以下错误。
数据类型tinyint 的算术溢出错误,值= 300。
输入值超出限制,因此显示错误。
我尝试了另一个查询
DECLARE @Input INT = 300
DECLARE @Ouput BIT
SET @Ouput = @Input
SELECT @Ouput
当我执行该语句时,我真的想知道,它没有显示任何错误。如果输入值<> 0
(负或正),输出值始终1
.
转换为位会将任何非零值提升为 1。
Sqlserver 有能力或者说尝试将值隐式转换为您的输入和输出类型,而不使用强制转换或转换函数(如果您未指定任何函数)。
当默认逻辑或场景中出现转换错误时,它会给出特定的类型转换错误。
所以你的tiny int和int长度是不同的,300不适合tiny int。 Tiny int 允许最大值为 255 值
这是隐式和显式的转换图
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)