在MS SQL中无法将十六进制转换为十进制

时间:2018-07-17 12:44:24

标签: sql

在MS SQL不起作用中将十六进制转换为十进制: MS查询:

声明@hex varchar(316)  SET @hex ='143307ac2b0a93795113'  SELECT CONVERT(int,CONVERT(binary(1000),@ hex,1))

错误:

  

信息8114,第16级,状态5,第4行
  将数据类型varchar转换为varbinary时出错。

2 个答案:

答案 0 :(得分:0)

尝试一下:

DECLARE @hex VARCHAR(316);
SET @hex = '143307ac2b0a93795113';

SELECT CASE
           WHEN CHARINDEX('0x', @hex) > 0 THEN --if 0x presents
               CONVERT(INT, CONVERT(VARBINARY(MAX), @hex, 1))
           ELSE -- if 0x does not present
               CONVERT(INT, CONVERT(VARBINARY(MAX), @hex, 2))
       END;

答案 1 :(得分:0)

https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

  

如果样式设置为1,则前两个必须为0x   字符。如果表达式包含奇数个字符,或者   如果任何字符无效,则会引发错误。

     

二进制样式字符0x将添加到字体的左侧。   转换为样式1的结果。