varchar和nvarchar的区别:
varchar(n)
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节(如varchar(6),当字段为qqq时,数据库实际占用空间为3个字节,而不是6个字节,但只允许存储6个字节,一般中文占两个字节)。
nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。
两字段分别有字段值:我和coffee
那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。
如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarchar
SQL Server中,varchar和nvarchar如何选择?
varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段 的类型为nvarchar,则会占用两个字节.
正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操 作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar就会出现乱码(显示为??).而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数 据,在开发阶段是发现不了的.多数情况下,在布署的时候也不会有问题.
但是!如果布署的主机是英文操作系统,并且不支持中文环境,那问 题就出来了.所有的varchar字段在存储中文的时候都会变成乱码(显示为??).而且一般情况下你不会知道这是因为你采用了错误的数据类型来存储所造 成的,你会试着去装中文字体,试着去设置操作系统的语言环境...这些都不能解决问题,唯一能解决问题的是把数据库字段的类型个性为nvarchar(或 者nchar).对项目管理比较熟悉的朋友应该都知道,到布署阶段再来修改数据库是一个很恐怖的事情.
使用nvarchar的另一个非常好处就是在判断字符串的时候可以不需要考虑中英文两种字符的差别.
当然,使用nvarchar存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的.
所以在Design的时候应该尽量使用nvarchar来存储数据.只有在你确保该字段不会保存中文的时候,才采用varchar来存储.
1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。
2、VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。
从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。
3、TEXT。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
4、NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar
分享到:
相关推荐
对于字符类型的字段,SQL Server 提供了 `char`、`varchar`、`nchar` 和 `nvarchar` 这四种常见的类型。下面我们将详细介绍这四种类型的特点及其适用场景。 #### 1. 定长 vs 变长 - **CHAR**: 是一种定长字符串...
`text`和`ntext`用于存储大量文本,但在SQL Server 2005及以后版本中被`varchar(max)`和`nvarchar(max)`所替代,后者提供更高效的空间利用和性能。 ### 3. 日期和时间类型 随着对时间敏感数据处理的需求日益增加,...
- **Nchar[(n)]**、**Nvarchar[(n)]**、**Ntext**:这些数据类型专门用于处理Unicode字符数据,与对应的非Unicode版本相比,它们每个字符占用的空间更大(2个字节而不是1个字节),但能够支持更广泛的字符集。...
13. **nchar/nvarchar/ntext**:统一编码字符类型,与char、varchar和text类似,但使用Unicode(UTF-16)编码,支持更多字符集。nchar和nvarchar的最大长度为4000个字符,ntext最大长度为2^31-1个字符。 了解并正确...
SQL Server 2000 提供了三种基本的字符数据类型:char(n),varchar(n),和text。char(n)是固定长度的字符数据类型,适合存储长度固定的字符串,例如,电话号码或邮政编码。它会占用n个字符的空间,不足的部分用空格...
- **SQL Server**: 支持 `Char`, `VarChar`, `NChar`, `NVarchar`, `Text`, `NText` 和 `Xml` 类型。 **6. 备注类型** - **Microsoft Access**: 使用 `Memo` 类型。 - **SQL Server**: 使用 `VarChar(max)` 或 `...
sql中varchar和nvarchar的区别与使用方法Sqlserver中char,nchar,varchar与Nvarchar的区别分析基于SQL Server中char,nchar,varchar,nvarchar的使用区别深入char、varchar、text和nchar、nvarchar、ntext的区别详解SQL...
Microsoft Access、MySQL 以及 SQL Server 所使用的数据类型和范围。 SQL Server 数据类型 Character 字符串 数据类型 描述 存储 char(n) 固定长度的字符串。最多 8,000 个字符。 n varchar(n) 可变长度的...
本文将深入探讨SQL Server与Oracle中的数据类型区别,并通过具体的例子来说明这两种系统之间的转换方法。 ### SQL Server 数据类型 SQL Server 是微软开发的一款关系型数据库管理系统,它支持多种数据类型,可以...
在数据库设计和开发中,了解不同数据库系统的数据类型和函数是非常关键的。本文将详细比较SQL Server和Oracle数据库之间的数据类型对应...同时,开发者也需要根据实际需求和数据库特性来灵活运用这些函数和数据类型。
Text、Ntext 和 Image 数据类型分别用于存储非Unicode文本、Unicode文本和大型二进制对象,但它们在SQL Server 2008之后已被nvarchar(max)、ntext(max) 和 varbinary(max)替代,因为这些新类型提供了更大的存储容量...
在SQL Server中,数据类型是至关重要的概念,它们定义了数据库中存储数据的种类和格式。SQL Server 2008提供了丰富的数据类型,允许用户根据需要存储不同类型的数据,如数值、日期/时间、文本、二进制等。以下是对...
`char`和`nchar`的最大长度为8000个字符,`varchar`和`nvarchar`的最大长度为4000个字符,而`text`和`ntext`则可以存储高达2^31-1个字符。 了解并正确使用这些数据类型对于设计高效且适应各种数据需求的数据库是至...
本文将深入探讨`CHAR`、`VARCHAR`、`TEXT`以及`NCHAR`、`NVARCHAR`、`NTEXT`的区别,帮助开发者做出更明智的选择。 1. **CHAR**: - `CHAR`是一种定长字符串类型,它会为每个字段预留指定的字节数,无论实际存储的...
- **text和ntext**:存储大量文本,已过时,现在推荐使用`varchar(max)`和`nvarchar(max)`。 3. **日期和时间数据类型** - **date**:存储年、月、日信息。 - **time**:存储时、分、秒信息,精度可达100纳秒。 ...
Unicode 数据类型包括 Nchar、Nvarchar 和 Ntext 三种。在 Microsoft SQL Server 中,使用 Unicode 数据类型,列中可以存储任何由 Unicode 标准定义的字符。使用 Unicode 数据类型,所占用的存储空间是使用非 ...
SQL Server 数据类型是数据库设计和开发中的核心概念,它们决定了数据如何存储、处理和检索。在SQL Server中,数据类型的选择直接影响着数据的精确性、存储需求和性能。以下是SQL Server中常见的一些数据类型的详细...
- **`sql_variant`**:可以存储任意类型的 SQL Server 数据,除了 `text`、`ntext` 和 `timestamp` 之外的所有数据类型。最大存储容量为 8000 字节。 - **`uniqueidentifier`**:用于存储全局唯一标识符 (GUID),每...
通过对 SQL Server、Microsoft Access 和 MySQL 中的数据类型的比较分析,我们可以看到不同数据库系统之间数据类型的差异性和相似性。选择合适的数据类型对于提高数据库性能、减少存储空间需求以及简化数据处理流程...
SQL Server 2008 中的字符数据类型包括 varchar、char、nvarchar、nchar、text 和 ntext 等。这些数据类型用于存储字符数据。其中,varchar 和 char 是最常用的两种字符数据类型。它们的主要区别在于数据填充方式。...