如何将具有十六进制值的varchar转换为int?

时间:2010-08-27 21:10:14

标签: sql-server

我需要将带有十六进制数的VARCHAR转换为INT,我试过了:

DECLARE @H VARCHAR(2);
SELECT @H = '9a'
SELECT CONVERT(INT, 0x + @H)

但它说@H必须是VARBINARY,如果我演员,我会得到一个完全不同的数字。

'9a'我想获得154,我该如何实现?

3 个答案:

答案 0 :(得分:3)

如果在2008年以上,您可以使用

Select @Value = Cast(CONVERT(varbinary(4), '0x' + @HexValue, 1) As int)

答案 1 :(得分:1)

看起来this guy会将您带到varbinary,然后您可以使用CONVERT函数。

看起来你可以用XML做natively。 WTF Micsrosft XML?

答案 2 :(得分:1)

Declare @HexValue varchar(10)
Set @HexValue = '9a'

Declare @Sql nvarchar(max)
Declare @Value int

Set @Sql = 'Select @Value = Cast(Cast(0x' + @HexValue + ' as varbinary(4)) As int)'
exec sp_executesql @Sql, N'@Value int OUTPUT', @Value OUTPUT

Select @Value