2010-08-27 104 views
3

我需要一個VARCHAR用十六進制數轉換成INT,我想:我如何將十六進制值的varchar轉換爲int?

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

但它說@H必須是一個VARBINARY,如果我投我得到一個完全不同的數字。我想獲得154,我該如何實現它?

回答

3

如果2008+可以使用

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

看起來像this guy會讓你到一個varbinary,那麼你可以使用CONVERT函數。

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

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 
+3

+1如果SQL Server 2008中,你不需要爲這個動態SQL。 '選擇@Value = Cast(CONVERT(varbinary(4),'0x'+ @HexValue,1)作爲int)'做這項工作。 – 2010-08-27 21:39:51

+0

@MartinSmith - 爲什麼不把這添加爲答案 – ughai 2015-10-23 07:19:11

+0

@ughai我已經編輯了我的現有答案以代替它。 – 2015-10-23 07:45:27

相關問題