Sql server 2008 r2 将文本转换为图像数据类型

Sql server 2008 r2 将文本转换为图像数据类型,sql-server-2008-r2,Sql Server 2008 R2,我有一个表,出于某种原因,它将文本存储为图像。我可以抓取数据并使用 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),

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

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))
它回来了䕔呓吠塅 这显然是不对的,因为它应该返回测试文本


我做错了什么?

您试图存储的文本被编码为二进制ASCII字符。您正试图将其转换回Unicode文本字符串,而这不是它最初的样子,因此您将返回乱码文本

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

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

它应该返回正确的文本。在SQL Server 2008上对此进行了测试,您试图存储的文本编码为二进制ASCII字符。您正试图将其转换回Unicode文本字符串,而这不是它最初的样子,因此您将返回乱码文本

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

SELECT CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY(MAX), CONVERT(IMAGE, CAST(N'TEST TEXT' AS VARBINARY(MAX))),2))
它应该返回正确的文本。在SQL Server 2008上测试了此选项

您可以使用此选项:

SELECT CONVERT(**VARCHAR(MAX)**, CONVERT(VARBINARY(MAX), **CAST('TEST TEXT' AS IMAGE)**,**0**))
基本上,您的角色类型转换不一致。在某些部分中,您使用了NVarChar和Varchar。此外,末尾的数字2也会影响结果。在Convert语句中,如果未指定代码,则使用默认值0。因此,如果要将其转换回,则应使用相同的代码。

您可以使用以下代码:

SELECT CONVERT(**VARCHAR(MAX)**, CONVERT(VARBINARY(MAX), **CAST('TEST TEXT' AS IMAGE)**,**0**))
基本上,您的角色类型转换不一致。在某些部分中,您使用了NVarChar和Varchar。此外,末尾的数字2也会影响结果。在Convert语句中,如果未指定代码,则使用默认值0。因此,如果要将其转换回,则应使用相同的代码