0

我有一个链接到 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出来的时候带有垃圾字符。

4

1 回答 1

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      
于 2013-05-07T05:03:04.050 回答