我怎样才能将两个较小的数据类型连接成一个更大的数据类型?
TinyInt(1)= 17 = 0001 0001
TinyInt(2)= 5 = 0000 0101
New SmallInt = TinyInt(1)+ TinyInt(2)= 4357 = 0001 0001 0000 0101
我试图通过存储过程在MSSQL Server 2008上执行此操作。然后将较大的值存储在表格中。
答案 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
解决方案。假设v1
和v2
为tinyint
,您可以这样做:
CAST(CAST(v1 AS varbinary(1)) + CAST(v2 AS varbinary(1)) AS smallint)
这种方法直接符合你的思路,但肯定不如纯粹的数学解suggested by shawnt00那么优雅。