我需要一個VARCHAR
用十六進制數轉換成INT
,我想:我如何將十六進制值的varchar轉換爲int?
DECLARE @H VARCHAR(2);
SELECT @H = '9a'
SELECT CONVERT(INT, 0x + @H)
但它說@H
必須是一個VARBINARY
,如果我投我得到一個完全不同的數字。我想獲得154
,我該如何實現它?
我需要一個VARCHAR
用十六進制數轉換成INT
,我想:我如何將十六進制值的varchar轉換爲int?
DECLARE @H VARCHAR(2);
SELECT @H = '9a'
SELECT CONVERT(INT, 0x + @H)
但它說@H
必須是一個VARBINARY
,如果我投我得到一個完全不同的數字。我想獲得154
,我該如何實現它?
如果2008+可以使用
Select @Value = Cast(CONVERT(varbinary(4), '0x' + @HexValue, 1) As int)
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
+1如果SQL Server 2008中,你不需要爲這個動態SQL。 '選擇@Value = Cast(CONVERT(varbinary(4),'0x'+ @HexValue,1)作爲int)'做這項工作。 – 2010-08-27 21:39:51
@MartinSmith - 爲什麼不把這添加爲答案 – ughai 2015-10-23 07:19:11
@ughai我已經編輯了我的現有答案以代替它。 – 2015-10-23 07:45:27