在MS SQL不起作用中将十六进制转换为十进制: MS查询:
声明@hex varchar(316) SET @hex ='143307ac2b0a93795113' SELECT CONVERT(int,CONVERT(binary(1000),@ hex,1))
错误:
信息8114,第16级,状态5,第4行
将数据类型varchar转换为varbinary时出错。
答案 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)
如果样式设置为1,则前两个必须为0x 字符。如果表达式包含奇数个字符,或者 如果任何字符无效,则会引发错误。
二进制样式字符0x将添加到字体的左侧。 转换为样式1的结果。