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
答案 0 :(得分:71)
嗯,Base64是一个ASCII编码,真的 - 所以绝对不需要NVARCHAR - 因为它是文本,我建议 VARCHAR(MAX)
它是纯文本,最多2 GB(应该足够),并且它是字符串类型,因此您可以使用它上面的所有字符串函数。 NVARCHAR确实使用了两倍的存储空间 - 每个字符总是2个字节 - 在这种情况下完全没用。