SQL Server 2014中如何将varbinary(max)转换为Base64?
SQL Server 2014 将varbinary(max)图片转换为Base64的正确方法
错误原因
你之前执行的语句SELECT CAST('' as varbinary(max)) FOR XML PATH(''), BINARY BASE64是对空二进制数据进行转换,自然无法得到正确的图片Base64编码。另外,若直接使用十六进制字面量(如0xFFD8FFE1...),需先将其转为合法的varbinary(max)类型,再进行Base64转换。
正确转换方式
1. 查询表中存储的图片列
假设你的表名为ImageTable,存储图片的列名为ImageData(类型为varbinary(max)),执行以下SQL语句:
SELECT ImageData FOR XML PATH(''), BINARY BASE64 FROM ImageTable
2. 使用十六进制字面量测试
如果是用示例的十六进制数据直接测试,需先将字面量转为varbinary(max)类型,再转换为Base64:
SELECT CAST(0xFFD8FFE115064578696600004D4D002A0000000800070... AS varbinary(max)) FOR XML PATH(''), BINARY BASE64
执行上述正确语句后,得到的结果就会和你预期的/9j/4RUGRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAA...一致。
补充说明
FOR XML PATH(''), BINARY BASE64是SQL Server中直接将二进制数据转换为标准Base64编码的原生方法,只要确保传入的是实际的图片二进制数据(而非空值或错误格式的字符串),就能得到符合Flutter开发需求的Base64字符串。
内容的提问来源于stack exchange,提问作者BaselCS
相关产品推荐
相关产品推荐

