Varbinary и преобразование изображений

У меня есть интерфейс доступа, который ссылается на сервер SQL Server.

В таблице есть 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 ответ

Вывод зависит от сохраненных данных и соответствующего преобразования.
Если сохраненные данные являются двоичными, например, растровые изображения, преобразование в текст никогда не даст полезного результата.
Если данные хранятся в текстовом формате, это может быть 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      
Другие вопросы по тегам