2012-10-24 30 views
2

當試圖記錄轉換爲XML在SQL中,我得到了以下錯誤消息:如何查詢varchar(MAX)列包含特定十六進制值的記錄?

消息6841,級別16,狀態1,過程trg_missacct_upd_del,58號線
FOR XML無法序列化節點的數據'AltAddr',因爲它包含一個不允許在XML中使用的字符(0x0002)。使用FOR XML檢索 此數據,將其轉換爲二進制,varbinary或圖像數據 類型並使用BINARY BASE64指令。

我想寫一個查詢來查找哪個記錄有這個十六進制值(0x0002)。我試過這樣的事情:

select * from missacct where altaddr like '%' + 0x0002 + '%' 

有沒有辦法查詢這條記錄?

回答

3
SELECT * FROM missacct WHERE altaddr LIKE '%' + CHAR(0x0002) + '%' 

,或者你可以做

SELECT * FROM missacct WHERE CHARINDEX(CHAR(0x0002), altaddr) >0 
+1

又找了NCHAR功能,如果CHAR不給你你在找什麼。 –

+0

感謝您的幫助! CHAR(0x0002)(也是CHAR(2))訣竅。 – RHarris

+0

注意/當心:0x2(十六進制2)與2(十進制2)相同。所以是的,他們會做同樣的事情,但... 0x077!= 77 –

相關問題