将数据类型varchar转换为sql中的varbinary仅在少数值时出错

Ami*_*mit 1 sql-server

IF(ISNUMERIC(RTRIM(LTRIM('83B1B88'))) = 0)
select CONVERT(VARCHAR, CONVERT(INT, CONVERT(VARBINARY, CONVERT(VARCHAR, '0x' + '83B1B88'), 1)))
Run Code Online (Sandbox Code Playgroud)

我不知道为什么SQL抛出错误转换数据类型为varchar到VARBINARY我得到这个例外适用于像值1B91B32,169DF90, 13077B5

谁能帮我吗 ?

Dam*_*ver 6

你传递的风格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如果您有一个奇数长度的序列,您应该添加一个填充.无论您在开始还是结束时填写,都取决于您的确切要求,序列的来源等.