我如何将十六进制值的varchar转换为int?
问题描述:
我需要一个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