2014-07-14 41 views
1

我想下面的查询转换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

+0

为什么你需要转换位为INT玛贝有一个其他的方式来解决你的问题。你可以切换行为:'SELECT CONVERT(BIT,CASE @Input WHEN 1 THEN 1 ELSE 0 END)' – GOB

+0

其实wats问题?我不能清楚地得到你的问题moto .. – sarathkumar

+0

@sarathkumar为什么'> 1'值doesn' t显示“BIT”数据类型转换的任何错误?它背后的转换功能是什么?它与其他转换(如INT到TINYINT)有何不同? – Jesuraja

回答

0

您会收到算术溢出的int值设置为tinyint因为对int值范围大于tinyint(你知道的。“微小”(在微小的声音))。

ANF如果使用bit这只有在计算机基础O1,基本价值,我觉得你得到的值是1,因为它有一个值,如果没有,你会得到0