我在下面尝试了查询
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
。
答案 0 :(得分:3)
Converting to bit promotes any nonzero value to 1.
如果你没有指定任何东西,那么Sqlserver有权力或者说试图将值隐式转换为输入和输出类型而不使用强制转换或转换函数。
当转换错误出现在默认逻辑或scenerio中时,它会给出特定的类型转换错误。
答案 1 :(得分:0)
您将int
值设置为tinyint
会收到算术溢出,因为int
的值范围大于tinyint
(您知道。“tiny” (声音很小))。
如果您使用的bit
只有O
或1
,基本在计算机基础知识中,并且我认为您获得的值是1,因为它有一个值,如果没有,你会得到0.