在查询中将varbinary转换为字符串

时间:2014-03-13 13:27:03

标签: xml sql-server-2008 varbinary

我试图以varbinary格式查询包含一些XML值的表,并且难以获得有意义的输出。

我查看了几个Google结果和Stack Overflow答案,例如this one,但建议的答案似乎对我不起作用。

我的最新版本的查询如下:

select top 100 EntryDataAndTime, EntryType, RequestID, Sequence, ServerName,
       cast(XML as varchar(max)) as xml_string
  from RequestResponseLog

这将返回最终列,格式如下:‹½U_oÓ0//¼ ¾ê+Zœ ...

我也尝试过:

select top 100 EntryDataAndTime, EntryType, RequestID, Sequence, ServerName,
       Convert(varchar(8000), XML, 2) as xml_string
  from RequestResponseLog

似乎以十六进制格式返回最后一列,例如1F8B0800000000000400BD555F6FD330102F2FBC ...

我上面提到的大多数Google搜索结果和Stack Overflow问题包括您执行某些操作的步骤......

declare @b varbinary(max)
set @b = 0x5468697320697320612074657374

使用强制转换功能之前。我并不完全清楚0x54 ..的值是什么,但这似乎假设您只想转换单个值而不是多行,除非我误解了?

任何有助于将转换为在查询中工作的可读字符串的帮助都将非常感激。

1 个答案:

答案 0 :(得分:1)

事先证明,在将这些数据作为BLOB写入数据库之前,在C#中的应用程序级别进行了一些压缩。因此,没有标准的SQL服务器函数将数据转换为人类可读的形式,我需要反转压缩应用程序中数据的过程。

我在这里留下了这个问题,而不是删除以后其他人有类似问题。