2012-10-24 29 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 –

相关问题