SQL Server中包含n个字符的文本的数据类型和大小?

时间:2016-02-29 13:34:33

标签: sql-server varchar nvarchar

我无法理解如何为我的文本定义一个具有适合我的最大大小的列。字符数。在Oracle中,我可以创建一个VARCHAR2(10 CHAR),它足够大,可以容纳10个字符。大小取决于数据库中使用的编码。但是我如何在SQL Server中执行此操作?我使用varchar(10)吗? nvarchar(10)?我希望能够存储各种角色(甚至是中文)。

2 个答案:

答案 0 :(得分:2)

如果您需要中文字符,则需要使用nvarchar(n)并指定有意义的n长度。

您正在定义字符,并且您需要的空间是该数字的两倍(因为SQL Server中的任何Unicode字符始终使用2个字节)。

最大。大小为nvarchar(4000) - 或者如果您确实需要更多,请使用nvarchar(max)(最多 10亿个字符)。

我建议只使用nvarchar(max)来解决所有事情,因为我们考虑的是你需要什么尺寸的懒惰!由于它是一个非常大的专栏,因此您无法将其编入索引。

答案 1 :(得分:0)

如果您使用max,则允许所有字符集的任意数量的字符。系统将优化存储。

行大小限制here。有关使用<?php $s = '23_The_Sample_Book_145236985.pdf'; // Separate the string based on underscore and create an array $arr = explode('_', $s); // Remove the first and last array elements // 23 and 145236985.pdf in the case of this string $arr = array_slice($arr, 1, (count($arr)-2)); // Rejoin with an underscore echo implode('_', $arr); 的限制,请参阅@marc_s的答案。