2017-07-26 67 views
0
IF(ISNUMERIC(RTRIM(LTRIM('83B1B88'))) = 0) 
select CONVERT(VARCHAR, CONVERT(INT, CONVERT(VARBINARY, CONVERT(VARCHAR, '0x' + '83B1B88'), 1))) 

我不知道爲什麼SQL拋出錯誤轉換數據類型爲varchar到VARBINARY 我得到這個例外適用於像1B91B32值,169DF9013077B5錯誤轉換數據類型爲varchar在SQL中VARBINARY只爲少數值

任何人都可以幫我嗎?

回答

4

您將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。無論你在開始或結束墊基於您的確切要求,序列來自哪裏,等等。

+0

感謝兄弟它的工作! :) – Amit

相關問題