将文本转换为图像数据类型

时间:2016-09-28 20:43:03

标签: sql-server-2008-r2

我有一张表,出于某种原因将文本存储为IMAGE。我可以抓取数据并使用

读取它
SELECT CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY(MAX), column,2)) FROM table

现在我需要将数据插回到表中。我试过了

SELECT CONVERT(IMAGE, CAST('TEST TEXT' AS VARBINARY(MAX)))

但是当我测试使用

将其转换回来时
SELECT CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY(MAX), CONVERT(IMAGE, CAST('TEST TEXT' AS VARBINARY(MAX))),2))

它返回䕔呓吠塅显然不对,因为它应该返回" TEST TEXT"

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

您尝试存储的文字被编码为二进制ASCII个字符。您尝试将其转换回Unicode文字字符串,该字符串不是原来的字符串,因此您会收回乱码文本。

通过在其前面添加N来将源文本字符串更改为Unicode字符串:

SELECT CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY(MAX), CONVERT(IMAGE, CAST(N'TEST TEXT' AS VARBINARY(MAX))),2))

它应该返回正确的文本。在SQL Server 2008上测试了这个

答案 1 :(得分:1)

你可以使用这个:

SELECT CONVERT(**VARCHAR(MAX)**, CONVERT(VARBINARY(MAX), **CAST('TEST TEXT' AS IMAGE)**,**0**))

基本上,您与字符类型转换不一致。在某些部分,您使用了NVarChar和一些零件Varchar。此外,最后的数字2正在影响结果。在转换语句中,如果未指定代码,则使用默认值(0)。因此,如果要将其转换回来,则应使用相同的代码。