SQL将两个较小的数据类型连接成一个较大的数据类型

时间:2015-03-16 19:09:42

标签: sql-server binary

我怎样才能将两个较小的数据类型连接成一个更大的数据类型?

TinyInt(1)= 17 = 0001 0001

TinyInt(2)= 5 = 0000 0101

New SmallInt = TinyInt(1)+ TinyInt(2)= 4357 = 0001 0001 0000 0101

我试图通过存储过程在MSSQL Server 2008上执行此操作。然后将较大的值存储在表格中。

3 个答案:

答案 0 :(得分:2)

您可以使用POWER功能进行位移,然后按位OR(|)。

declare @x tinyint
declare @y tinyint

set @x = 17
set @y = 5

declare @z smallint
set @z = @x * power(2, 8) | @y
select @z

答案 1 :(得分:1)

您可以将第一个值乘以第二个值的范围,将它们打包在一起。

v1 * 256 + v2

答案 2 :(得分:1)

还有一个varbinary解决方案。假设v1v2tinyint,您可以这样做:

CAST(CAST(v1 AS varbinary(1)) + CAST(v2 AS varbinary(1)) AS smallint)

这种方法直接符合你的思路,但肯定不如纯粹的数学解suggested by shawnt00那么优雅。