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

SQL concatenate two smaller datatypes into one larger datatype

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

TinyInt(1) = 17 = 0001 0001

TinyInt(2) = 5 = 0000 0101

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

我正在尝试通过存储过程在 MSSQL Server 2008 上执行此操作。然后将较大的值存储在 table.

您可以使用 POWER 函数进行位移,然后执行按位或 (|)。

declare @x tinyint
declare @y tinyint

set @x = 17
set @y = 5

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

您可以通过将第一个值与第二个值的范围相乘来将它们打包在一起。

v1 * 256 + v2

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

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

这种方法直接符合你的思路,但肯定不如纯数学解决方案优雅