代码之家  ›  专栏  ›  技术社区  ›  Andrew M

存储base64编码文件的SQL数据类型是什么?

  •  34
  • Andrew M  · 技术社区  · 14 年前

    nvarchar(max),varchar(max),或者我真的应该对字符串进行解码,并将其放入图像或blob或其他内容中吗?

    较长的版本:(有所有丰富的细节)

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

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

    我本来只是想用nvarchar(max),我相信这是可行的。但后来我认为base64编码意味着它可以使用varchar(max)来代替,并且使用更少的存储空间。这是对的吗?或者,我应该咬住子弹,将文本解码为二进制文件,将其存储为一个斑点,然后在退出时重新编码?

    最后-负载存储和性能不太可能造成问题,这是一个宠物项目,将是低负载。

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

    1 回复  |  直到 10 年前
        1
  •  65
  •   marc_s    14 年前

    好吧,base64是一种ASCII编码,真的-所以绝对不需要nvarchar-而且既然它是文本,我建议 VARCHAR(MAX)

    它是纯文本,高达2GB(应该足够了),是字符串类型,所以您可以在上面使用所有字符串函数。nvarchar确实使用了两倍的存储空间(每个字符总是2个字节),在这种情况下是完全不必要的。