1

我有一个名为 X509 的列的表,我使用此函数来了解存储值的字符数:

select distinct  LEN (x509certificate)   from ctrc     

该声明已返回我这些值:

  2112
  2732
  2748
  2800

我需要在此列中保存从 2112(min) 到 2800(max) 个字符的值,该表使用 NVARCHAR(max) 或 nvarchar 长度 -1。这种数据最好的sql类型是什么???

谢谢亚历杭德罗

4

3 回答 3

4

如果您的意思是存储证书本身的最佳列类型是什么,X509 证书没有固定长度,使用 nvarchar 是正确的选择,并且 nvarchar(MAX) 或例如 nvarchar(maxlength * 2) 将有与尝试正确获得确切的长度要求相比,对数据库的性能影响基本上为零。

如果您的意思是最适合存储 LEN 计算的结果,那么常规的 int 列就可以了。tinyint 也可以,但是如果您正在考虑性能或存储问题,除非您存储数十亿行,否则差异将低于您维护/记忆的心理成本。

总之,“保持简单”:)

于 2013-06-06T13:11:20.897 回答
1

你可以这样做:

ALTER TABLE ctrc ADD [cert_length] as LEN (x509certificate);

SQL Server 将为列使用合适的大小。

如果您谈论证书,那么 NVARCHAR(MAX) 就可以了。(N)VARCHAR(max)如果您没有更改任何表选项并且页面中仍有足够的空间,SQL Server 将在行中存储偶数列。

于 2013-06-06T13:11:08.360 回答
0

我认为 varchar(max) 是长度未知的字符串的最佳数据类型。

有关更多详细信息,您可以通过此链接: http: //www.dotnetspider.com/forum/158173-Difference-between-Varchar-nvarchar.aspx

于 2013-06-06T13:19:21.073 回答