将INT转换为BIT

时间:2014-07-14 06:28:09

标签: sql-server int bit

我在下面尝试了查询

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

2 个答案:

答案 0 :(得分:3)

Converting to bit promotes any nonzero value to 1.

如果你没有指定任何东西,那么Sqlserver有权力或者说试图将值隐式转换为输入和输出类型而不使用强制转换或转换函数。

当转换错误出现在默认逻辑或scenerio中时,它会给出特定的类型转换错误。

So your tiny int and int length is differ, 300 is not fit in tiny int. Tiny int allow max at 255 value

Here is implicit & explicit convertion chart

答案 1 :(得分:0)

您将int值设置为tinyint会收到算术溢出,因为int的值范围大于tinyint(您知道。“tiny” (声音很小))。

如果您使用的bit只有O1,基本在计算机基础知识中,并且我认为您获得的值是1,因为它有一个值,如果没有,你会得到0.