当我使用以下代码提供文本的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