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