首页 > 解决方案 > 我可以在 SQL 中将变量设置为数据类型长度吗?

问题描述

我有一个带有反转字节的十六进制变量。为了反转字节,我找到了二进制类型的解决方案,并且反转它取决于它的大小。因为我必须反转变量@card的字节,它可以是不同的大小,所以我正在考虑声明变量@binarylen,输入int,我想将其设置为数据类型长度但得到一个错误'语法不正确:期望ID,INTEGER或QOUTED_ID '。我能以某种方式做到这一点吗?

DECLARE @card_hex nvarchar(max)
DECLARE @card_int bigint
DECLARE @badgenr nvarchar(max)
set @badgenr= '120224205061286445' 

-- convert it to hex
        set @card_int = convert (bigint, (@badgenr))
        print @card_int
        set @card_hex = CONVERT(NVARCHAR(31),CONVERT(VARBINARY, @card_int),2)
        print @card_hex

--remove leading zeroes:
set @card_hex = (select substring(@card_hex, patindex('%[^0]%',@card_hex), 20))
print @card_hex

DECLARE @bitelen as int
set @bitelen= LEN(@card_hex)

declare @binarylen as int
set @binarylen=@bitelen/2 + @bitelen%2

declare @reverse as binary(@binarylen)
set @reverse=( SELECT cast(reverse(cast(@card_int AS BINARY(@binarylen))) AS BINARY(@binarylen)))

标签: sql-servertsqltypessqldatatypesvariable-length

解决方案


推荐阅读