【问题标题】:Convert varbinary to string within query在查询中将 varbinary 转换为字符串
【发布时间】:2014-03-13 13:27:03
【问题描述】:

我正在尝试查询包含一些 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

在你使用 cast 函数之前。我不完全清楚 0x54.. 值是什么,但这似乎假设您只想转换单个值而不是像我一样转换多行,除非我误解了?

任何帮助转换为在查询中工作的可读字符串将不胜感激。

【问题讨论】:

  • 您是否尝试过投射到nvarchar(max)xml
  • @MikaelEriksson 这两个都不行,我会出错。

标签: xml sql-server-2008 varbinary


【解决方案1】:

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

我已将这个问题留在这里,而不是删除以防其他人将来遇到类似问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多