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
解决方案适合您。假设 v1
和 v2
是 tinyint
,你可以这样做:
CAST(CAST(v1 AS varbinary(1)) + CAST(v2 AS varbinary(1)) AS smallint)
这种方法直接符合你的思路,但肯定不如纯数学解决方案优雅。
我怎样才能将两个较小的数据类型连接成一个较大的数据类型?
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
解决方案适合您。假设 v1
和 v2
是 tinyint
,你可以这样做:
CAST(CAST(v1 AS varbinary(1)) + CAST(v2 AS varbinary(1)) AS smallint)
这种方法直接符合你的思路,但肯定不如纯数学解决方案优雅