Sql server SQL Server 2005-如何将图像数据类型转换为字符格式

Sql server SQL Server 2005-如何将图像数据类型转换为字符格式,sql-server,image,types,Sql Server,Image,Types,背景:我是一名软件测试人员,使用测试用例管理数据库,该数据库使用不推荐的图像数据类型存储数据。我对SQL Server相对缺乏经验 问题:具有富文本格式的字符数据存储为图像数据类型。目前,以人类可读的格式查看这些数据的唯一方法是通过测试用例管理工具本身,我正在替换它。我知道没有直接的方法将图像数据类型转换为字符,但显然有某种方法可以实现,因为测试用例管理软件正在执行该任务。我已经搜索了这个网站,没有找到任何点击率。我还没有通过搜索网络找到任何解决方案 目标:我的目标是将数据从SQL Server

背景:我是一名软件测试人员,使用测试用例管理数据库,该数据库使用不推荐的图像数据类型存储数据。我对SQL Server相对缺乏经验

问题:具有富文本格式的字符数据存储为图像数据类型。目前,以人类可读的格式查看这些数据的唯一方法是通过测试用例管理工具本身,我正在替换它。我知道没有直接的方法将图像数据类型转换为字符,但显然有某种方法可以实现,因为测试用例管理软件正在执行该任务。我已经搜索了这个网站,没有找到任何点击率。我还没有通过搜索网络找到任何解决方案

目标:我的目标是将数据从SQL Server数据库导出到Access数据库中,因为数据库中的行少于10000行。在项目的后期阶段,Access数据库将升级为SQL Server

请求:有人能给我一个将图像数据类型转换为字符格式的方法吗


您可能希望转换为字节数据,而不是字符。这篇文章在我的博客上
可能有用。它包含用于导出到字节数组和文件的代码。整个C项目都可以作为zip文件下载。

一种提高可读性的解决方案是将其分块从二进制数据转换为字符数据。如果每个字节都是有效的ASCII码,那么应该不会有问题,尽管遗留数据通常不是您所期望的

首先,创建如下表:

create table Nums(
  n int primary key
);
并插入从0到至少最大图像列长度(字节/8000)的整数。然后,下面的查询未经测试,因此仔细考虑一下,您的数据将以相对有用的形式显示出来。确保将其拉入的任何客户端都不会截断小于8000字节的字符串。如果你想在记事本或其他东西中打开结果,你可以做更小的块

SELECT
  yourTable.keycolumn,
  Nums.n as chunkPosition,
  CAST(SUBSTRING(imageCol,n*8000+1,8000) AS VARCHAR(8000)) as chunk
FROM yourTable
JOIN Nums
ON Nums.n <= (DATALENGTH(yourTable.imageCol)-1)/8000
ORDER BY yourTable.keycolumn, Nums.n

谢谢你的回复。这个解决方案超出了我的技术专长,但我将把它传递给我团队中的一位开发人员,希望他能够实现。再次感谢!运行查询后,我得到了一个包含三列id、chunkposition和chunk的表,但是一个空nums表没有结果行。还有什么我可以试试的吗?我是否错误地翻译了SQL?下面是我执行的SQL语句:选择bf_udt_1525e954.id,Nums.n作为chunkPosition,CASTSUBSTRINGudfld_159629123,n*8000+18000作为VARCHAR8000作为bf_udt_1525e954的chunk作为Nums上的JOIN Nums。n您必须在Nums表中插入从0到至少最大图像列长度(字节/8000)的整数吗?我没有为此包含INSERT语句。确保插入足够的行。Steve,如果您仍在监视此查询,我仍然可以使用您的帮助。我很抱歉,但我的SQL技能并不是特别先进,不能很好地说。创建nums表后,如何插入从0到至少最大图像列长度(以字节/8000为单位)的整数?我不完全清楚发生了什么事。您在解释总体解决方案方面做得很好,但我对解决方案的实际工作方式仍不清楚。您能否以技术测试人员无法理解的方式进行解释?。谢谢