我将PDF文档存储在我的表中作为二进制文件,存储PDF的字节的列是varbinary(max)
类型。我想update
在SQL Studio中使用更新文档的一条记录,我试图完成此操作的方式如下所示
UPDATE table
SET file_bytes=CONVERT(varbinary(max),'JVBERi0xLjYNCiW2JqDQo8PC9UeX...0YNCg==') --this is a base64 string
WHERE id='73c75254-ad86-466e-a881-969e2c6e7a04';
查询运行,但是当我尝试下载文档(通过网站)时,它会抛出一条显示PDF header signature not found.
这种转换是否可能?
答案 0 :(得分:0)
可以使用这里描述的方法:https://blogs.msdn.microsoft.com/sqltips/2008/06/30/converting-from-base64-to-varbinary-and-vice-versa/
这是一个两步过程,首先声明一个变量:
declare @str varchar(max) = '/9j/4AAQSkZJRgABAQEAAAAAAAD/==';
然后,您可以在SQL语句中使用变量,如下所示:
INSERT INTO Documents (Name, Body, MIMEType)
VALUES('12446_photo.jpg', cast(N'' as xml).value('xs:base64Binary(sql:variable("@str"))', 'varbinary(max)'), 'image/jpeg');