如何查询varchar(MAX)列包含特定十六进制值的记录?

时间:2012-10-24 14:07:50

标签: sql-server

当尝试在sql中将记录转换为xml时,我收到以下错误消息:

  

Msg 6841,Level 16,State 1,Procedure trg_missacct_upd_del,Line 58
  FOR XML无法序列化节点'AltAddr'的数据,因为它包含XML中不允许的字符(0x0002)。要检索   这些数据使用FOR XML,将其转换为二进制,varbinary或图像数据   输入并使用BINARY BASE64指令。

我想编写一个查询来查找哪个记录具有此十六进制值(0x0002)。我尝试过这样的事情:

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

有没有办法查询这条记录?

1 个答案:

答案 0 :(得分:3)

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

或者你可以做到

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