字符串转换为负整数T-sql

时间:2016-03-18 00:17:27

标签: tsql

所以我上周在Sql课程中学到了如何将字符串转换为整数。我们用于此的表是基于时区的。所以它是'-5'小时偏移。

为了做到这一点,我们必须将字符串转换为DECIMAL,然后转换为SMALLINT。一旦我知道,这很简单,那不是我的问题所在。

好奇的是,为什么SMALLlNT不会采取负号,但是Decimal可以做到。根据规格,SMALLINT仍然可以转到-32768。那么有人知道这是否仍然存在于所有编码语言中,还是仅仅是SQL特定的?以及不允许它施放的东西

2 个答案:

答案 0 :(得分:0)

我不明白你为什么要开始做任何演员?根据{{​​3}}(参见页面下面的表1/3),T-SQL支持varchar和smallint之间的隐式转换。

DECLARE @negative_varchar VARCHAR(10) = '-5'

DECLARE @negative_smallint SMALLINT = CONVERT(SMALLINT, @negative_varchar)

DECLARE @negative_smallint_implicit SMALLINT = @negative_varchar

SELECT @negative_varchar, @negative_smallint, @negative_smallint_implicit

可生产

---------- ------ ------
-5         -5     -5

答案 1 :(得分:-1)

这不是我的意思(声明@s为nvarchar @ S = -5

(50)= CAST(@s AS SMALL INT)

再次你必须从十进制转换然后小int。即时通讯询问流程背后的底层代码。

例如,其中一个字节是否保持数字是正数还是负数......