Base64图像数据未转换为varbinary(Max)

时间:2017-10-03 15:01:07

标签: sql sql-server sql-server-2008 sql-server-2005

当我使用以下代码提供文本的Base 64数据时,它将转换为VarBinary(Max)。但是当我尝试对图像数据进行相同的转换时,它会返回null而不是varBinary(Max)

SQL代码:

Select
  CAST(N'' AS XML).value('xs:base64Binary(sql:column("r.[PictureBinary]"))', 'VARBINARY(MAX)') as Image

此代码适用于转换为Base64的任何文本,但如果我将图像转换为Base64并使用此代码将base64字符串转换为varbinary,则返回null。

IF OBJECT_ID('tempdb..#tempPicture') IS NOT NULL DROP TABLE #tempPicture
Declare @Picture xml = '<ArrayOfProductImage><ProductImage><NavPK>10000</NavPK><PictureBinary>3qAAAA==</PictureBinary></ProductImage></ArrayOfProductImage>'

Declare @H_Doc int
EXEC sp_xml_PrepareDocument @H_Doc OUTPUT, @Picture

Select * 
into #tempPicture
FROM
    OPENXML(@H_Doc,'/ArrayOfProductImage/ProductImage',2)
        WITH(
                [NavPK] varchar(100),
                [PictureBinary] nvarchar(Max)
            )
EXEC sp_xml_RemoveDocument @H_Doc
Select * from #tempPicture

Select
  Cast(CAST(N'' AS XML).value('xs:base64Binary(sql:column("r.[PictureBinary]"))', 'VARBINARY(MAX)') As Image) as Image,
  'image/jpeg',1,
  r.[NavPK]
From #tempPicture r

0 个答案:

没有答案