我有一个名为X509的列的表,我已经使用了这个函数知道如何 许多字符都有存储的值:
select distinct LEN (x509certificate) from ctrc
这个陈述给了我这些价值观:
2112
2732
2748
2800
我需要在此列中保存从2112(最小)到2800(最大)字符的值,该表使用NVARCHAR(max)或nvarchar lenght -1。什么是这种数据的最佳sql类型???
感谢亚历杭德罗
答案 0 :(得分:4)
如果你的意思是什么是用于存储证书本身的最佳列类型,那么X509证书没有固定的长度,使用nvarchar是正确的,nvarchar(MAX)或者例如与试图获得正确的长度要求相比,nvarchar(maxlength * 2)对数据库的性能影响基本为零。
如果你的意思是最好存储LEN计算的结果,那么常规的int列就可以了。 tinyint也能正常工作,但如果你考虑性能或存储问题,那么除非你存储数十亿行将比你维护/记忆的精神成本低,否则再次发挥作用。
总之,'保持简单':)
答案 1 :(得分:1)
你可以这样做:
ALTER TABLE ctrc ADD [cert_length] as LEN (x509certificate);
SQL Server将为列使用合适的大小。
如果您谈论证书,那么NVARCHAR(MAX)就可以了。如果您没有更改任何表选项并且页面中仍有足够的空间,SQL Server将在行中存储偶数(N)VARCHAR(max)
列。
答案 2 :(得分:0)
我认为varchar(max)是长度未知的字符串的最佳数据类型。
有关详细信息,您可以浏览此链接: http://www.dotnetspider.com/forum/158173-Difference-between-Varchar-nvarchar.aspx