IF(ISNUMERIC(RTRIM(LTRIM('83B1B88'))) = 0)
select CONVERT(VARCHAR, CONVERT(INT, CONVERT(VARBINARY, CONVERT(VARCHAR, '0x' + '83B1B88'), 1)))
我不确定为什么sql会抛出将数据类型varchar转换为varbinary的错误
我仅针对1B91B32
,169DF90
,13077B5
任何人都可以帮助我吗?
答案 0 :(得分:5)
您将1
的样式传递给CONVERT
。
如果data_type是二进制类型,则表达式必须是字符表达式。表达式必须由偶数个十六进制数字组成(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,a,b,c ,d,e,f)。如果样式设置为1,则字符0x必须是表达式中的前两个字符。 如果表达式包含奇数个字符,或者如果任何字符无效,则会引发错误。
我的重点。
所有无效序列的例子似乎都有奇数长度。如果您有一个奇数长度序列,则应添加填充0
。无论您在开始还是结束时填写,都取决于您的确切要求,顺序来自哪里等等。