我的表中以二进制形式存储了 PDF 文档,存储 PDF 字节的列是 typevarbinary(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.
这种转换可能吗?
使用此处描述的方法是可能的:https://blogs.msdn.microsoft.com/sqltips/2008/06/30/converting-from-base64-to-varbinary-and-vice-versa/ 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');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)