【问题标题】:Which SQL data type to store Base64 encoded file?存储 Base64 编码文件的 SQL 数据类型是什么?
【发布时间】:2011-01-24 18:04:50
【问题描述】:

nvarchar(max), varchar(max),还是我真的应该解码字符串并将其放入图像或 blob 或其他东西中?

更长的版本:(包含所有有趣的细节)

我有一个 .Net SOAP Web 服务,它将记录保存在 SQL 2008 DB 中。该服务将被扩展以接受图像,该图像(无论好坏)也需要暂时进入数据库。

为简单起见,服务将图像作为 Base 64 编码字符串,稍后必须将其作为 base64 编码字符串返回(同一服务上的不同方法)。

我最初只是打算使用 nvarchar(max),我相信这会奏效。但后来我认为 base64 编码意味着它可以使用 varchar(max) 代替,并且使用更少的存储空间。这是正确的吗?还是我应该咬紧牙关将文本解码为二进制,将其存储为 blob,然后在输出时重新编码?

最后 - 负载存储和性能不太可能导致问题,这是一个宠物项目,负载会很低。

编辑:在回答@howiecamp 的问题时,我在这里写下了我是如何对图像进行 URL 编码的:http://www.flowerchild.org.uk/archive/2010/06/13/base-64-encoding-an-image-to-pass-across-a-web.html

【问题讨论】:

  • 您能否分享您的代码,用于对文档进行 base 64 编码以进行存储,然后反过来?

标签: sql-server base64


【解决方案1】:

嗯,Base64 是 ASCII 编码,真的 - 所以绝对不需要 NVARCHAR - 因为它是文本,我建议 VARCHAR(MAX)

纯文本,最大2GB(应该够用了),而且是字符串类型,所以可以在上面使用所有的字符串函数。 NVARCHAR 确实使用了两倍的存储空间 - 每个字符总是 2 个字节 - 在这种情况下完全没有必要。

【讨论】:

  • Varchar(max) 它是。在易于实施和实际上不丢弃存储之间取得了很好的折衷。谢谢:)
猜你喜欢
  • 2020-01-25
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 2015-09-26
  • 2020-05-28
  • 2017-01-22
  • 2020-12-21
  • 1970-01-01
相关资源
最近更新 更多