Varbinary和图像转换

时间:2013-05-07 00:35:39

标签: sql sql-server varbinary

我有一个链接到SQL Server后端的Access前端。

表格中有3个字段,我试图从后端转换为文本:

o_name                varbinary(2000)  
O_PropertyBinary1     varbinary(2000)  
O_PropertyBinary2     image

我可以使用以下内容转换o_name字段:

convert(varchar([max]),[O_Name])  

并且工作正常。

e.g. 4153534554  = ASSET

但是,我可以在其他两个字段中使用什么,因为我似乎无法转换图像字段并转换O_PropertyBinary1时会出现乱码。

1 个答案:

答案 0 :(得分:0)

输出取决于存储的数据和适当的转换 如果存储的数据是二进制的转换为文本的位图永远不会产生可用的结果 如果存储的数据是文本,则可能是Varchar或NVarchar,并且类型转换取决于。

在下面的示例中,VC_VB2NVarchar和VC_IMG2NVarchar将显示您描述的garbage characters

Declare @tab Table(nvc NVarchar(100),vc Varchar(100)
,img image,vb VarBinary(200),img2 image,vb2 VarBinary(200))
Insert into @tab (nvc,vc) Values ('123456789','123456789')

Update @tab set vb=Convert(VarBinary(200),nvc),img=Convert(Image,Convert(Varbinary(max),nvc))
               ,vb2=Convert(VarBinary(200),vc),img2=Convert(Image,Convert(Varbinary(max),vc))
Select nvc,vc
      ,CONVERT(Nvarchar(100),vb) as NVC_VB2NVarchar
      ,CONVERT(Varchar(200),vb)  as NVC_VB2Varchar
      ,CONVERT(Nvarchar(100),Convert(VarBinary(max),img)) as NVC_IMG2NVarchar
      ,CONVERT(Varchar(200),Convert(VarBinary(max),img))  as NVC_IMG2Varchar
      ,CONVERT(Nvarchar(100),vb2) as VC_VB2NVarchar
      ,CONVERT(Varchar(200),vb2)  as VC_VB2Varchar
      ,CONVERT(Nvarchar(100),Convert(VarBinary(max),img2)) as VC_IMG2NVarchar
      ,CONVERT(Varchar(200),Convert(VarBinary(max),img2))  as VC_IMG2Varchar

from @Tab