将base 64字符串插入SQL Server数据库

Jac*_*ack 5 c# t-sql database sql-server base64

我从XML文件中获取了一个base 64字符串,我想将其插入到我的SQL Server数据库中.哪个字段类型在我的数据库中有字段?VARBINARY(MAX)?在插入数据库之前,是否必须将base 64字符串转换为另一种格式?

最好的祝福

Dan*_*llo 14

如果您打算按原样存储Base64字符串,则可以使用VARCHAR数据类型.Base64编码设计为仅使用7位ASCII字符.

但是,如果您希望以二进制格式存储数据,则需要使用VARBINARY数据类型并将Base64字符串转换为二进制.您可以使用XQuery功能(从SQL Server 2005开始)轻松地将值转换为VARBINARY,反之亦然.

将变量中的Base64值转换为VARBINARY:

declare @str varchar(20);

set @str = '3qAAAA==';

select cast(N'' as xml).value('xs:base64Binary(sql:variable("@str"))', 'varbinary(20)');
Run Code Online (Sandbox Code Playgroud)

将变量中的二进制值转换为Base64:

declare @bin varbinary(20);

set @bin = 0xDEA00000;

select cast(N'' as xml).value('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))', 'varchar(20)');
Run Code Online (Sandbox Code Playgroud)

源(以及更多示例):从Base64转换为varbinary,反之亦然.


mar*_*c_s 9

因为它是一个字符串而一个字符串是一个字符串是一个字符串,你应该能够将它放入一个VARCHAR(x)VARCHAR(MAX)字段而没有任何问题.

"大小" VARCHAR(x)有一个最大值.长度为8000个字符,VARCHAR(MAX)最大值为2 GB(2**31-1字节).

  • 你说它是一个字符串?;) (2认同)
  • 我做了 - 你不明白吗?:d (2认同)