哪种SQL数据类型存储Base64编码文件?

时间:2010-03-07 19:37:37

标签: sql-server base64

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

1 个答案:

答案 0 :(得分:71)

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

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