`
holdbelief
  • 浏览: 707770 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL中char、varchar、text和nchar、nvarchar、ntext的区别

阅读更多
    第一篇转载:
    这个问题以前遇到过,不过没有系统的了解,碰巧前几天同学问起,便查了下资料,整理总结了一下。
    1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。
    2、VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。
    修改前(char)
    修改后(varchar)
   上面两个图是论坛中网友贴出来的,可以看到修改后pw_user“减肥”效果相当明显。
    从空间上考虑,用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。
    第二篇转载:

char、nchar、varchar与nvarchar数据类型定义:

char[(n)]
   长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。

char 在 SQL-92 中的同义词为 character。

nchar(n)
   包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。nchar 在 SQL-

92 中的同义词为 national char 和 national character。

varchar[(n)]
   长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字

节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或

character varying。

nvarchar(n)
    包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。

所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。


注:如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。

-----------------------------------------------------

在这里我们必须要了解一下Unicode字符:

Unicode 定义:(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的

二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
有关unicode字符表可以参考一下:http://www.jflycn.net/unicode/

------------------------------------------------------

char、nchar、varchar与nvarchar数据类型使用区别:

支持多语言的站点应考虑使用 Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题。

如果希望列中的数据值大小接近一致,请使用 char。

如果希望列中的数据值大小显著不同,请使用 varchar。

如果希望列中所有数据项的大小接近一致,则使用 nchar。

如果希望列中数据项的大小差异很大,则使用 nvarchar。

如果执行 CREATE TABLE 或 ALTER TABLE 时 SET ANSI_PADDING 为 OFF,则一个定义为 NULL 的 char 列将被作为 varchar 处理。

当排序规则代码页使用双字节字符时,存储大小仍然为 n 个字节。根据字符串的不同,n 个字节的存储大小可能小于 n 个字符。

 

    第三篇转载

char varchar nvarchar区别

联机帮助上的:

char(n)  定长 索引效率高 程序里面使用trim去除多余的空白
n 必须是一个介于 1 和 8,000 之间的数值,存储大小为 n 个字节
varchar(n) 变长 效率没char高 灵活
n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节
text(n) 变长 非Unicode数据
 
nchar(n) 定长 处理unicode数据类型(所有的字符使用两个字节表示)
n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍
nvarchar(n) 变长 处理unicode数据类型(所有的字符使用两个字节表示)
n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零
ntext(n)  变长 处理unicode数据类型(所有的字符使用两个字节表示)
 


一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar

分享到:
评论

相关推荐

    char、varchar、nchar、nvarchar四种类型的区别

    对于字符类型的字段,SQL Server 提供了 `char`、`varchar`、`nchar` 和 `nvarchar` 这四种常见的类型。下面我们将详细介绍这四种类型的特点及其适用场景。 #### 1. 定长 vs 变长 - **CHAR**: 是一种定长字符串...

    深入char、varchar、text和nchar、nvarchar、ntext的区别详解

    本文将深入探讨`CHAR`、`VARCHAR`、`TEXT`以及`NCHAR`、`NVARCHAR`、`NTEXT`的区别,帮助开发者做出更明智的选择。 1. **CHAR**: - `CHAR`是一种定长字符串类型,它会为每个字段预留指定的字节数,无论实际存储的...

    过程需要参数 ‘@statement’ 为 ‘ntext/nchar/nvarchar’ 类型

    代码如下:declare @strCountTmp varchar(100) ...nchar,varchar与Nvarchar的区别分析基于SQL Server中char,nchar,varchar,nvarchar的使用区别深入char、varchar、text和nchar、nvarchar、ntext的区别详解SQL2005中char

    SQL中varchar和nvarchar的基本介绍及其区别

    在SQL中,`varchar`和`nvarchar`是两种常见的字符数据类型,它们分别用于存储非Unicode和Unicode字符数据。理解这两种类型的区别对于数据库设计和优化至关重要。 `varchar(n)`是可变长度的非Unicode字符数据类型,...

    何更改sql2005数据库的编码方式

    * 存储过程和用户定义函数的所有现有 char、varchar、text、nchar、nvarchar 或 ntext 参数和标量返回值。 * char、varchar、text、nchar、nvarchar 或 ntext 系统数据类型和基于这些系统数据类型的所有用户定义的...

    SQL数据库的学习总结部分

    在SQL数据库中,常见的数据类型有char、varchar、text、nchar、nvarchar和ntext等。 1. char:char类型存储定长数据,char字段上的索引效率高,但存储大小固定,不足的自动用空格填充,读取时可能需要用到trim()。 ...

    MSSQL中所有字段类型的区别

    一、char、varchar、text 和 nchar、nvarchar、ntext 的区别 char、varchar、text 是用于存储字符串类型的数据,而 nchar、nvarchar、ntext 是用于存储 Unicode 字符串类型的数据。 1. char char 类型用于存储定...

    SQL字符类型.docx

    在SQL Server中,字符数据类型是用来存储文本信息的,包括`char`、`nchar`、`varchar`、`nvarchar`、`text`和`ntext`。这些数据类型各有其特点和适用场景。 1. `char`和`nchar`: - `char(n)`是定长的非Unicode...

    SQLSERVER数据类型详解.pdf

    `char`和`nchar`的最大长度为8000个字符,`varchar`和`nvarchar`的最大长度为4000个字符,而`text`和`ntext`则可以存储高达2^31-1个字符。 了解并正确使用这些数据类型对于设计高效且适应各种数据需求的数据库是至...

    SQL数据类型详细介绍

    在本文中,我们将重点关注字符类型,包括`CHAR`, `NCHAR`, `VARCHAR`, `NVARCHAR`, `TEXT`, 和 `NTEXT`。 1. **CHAR和NCHAR**: - `CHAR`是固定长度的字符数据类型,长度范围是1到8,000个字符。无论实际存储的数据...

    过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型

    `ntext`、`nchar`和`nvarchar`是SQL Server中用于存储文本数据的类型: 1. `ntext`:这是用来存储大量非Unicode文本数据的类型,最大长度可达2^30个字节(约1GB)。但在SQL Server 2016及更高版本中,`ntext`已被...

    数据库原理电子教案:第四章 SQL Server表管理.doc

    6. 字符型:char、varchar、nchar和nvarchar,其中nchar和nvarchar支持Unicode字符,char和varchar为固定长度和可变长度,超出长度会被截断或用空格填充。 7. 文本和图像型:text、ntext和image,用于存储大量文本...

    SQL-Server常用关键字、数据类型和常用语法.docx

    字符类型包括`char`、`nchar`、`varchar`、`varchar(MAX)`、`nvarchar`、`nvarchar(MAX)`、`text`和`ntext`,它们用于存储文本数据,其中`char`和`nchar`为固定长度,`varchar`和`nvarchar`为可变长度,`MAX`表示...

    sqlserver-oracle 数据类型对照

    - `nchar`和`nvarchar`在SQL Server中对应Oracle的`NCHAR`和`NVARCHAR2`,用于存储Unicode字符。 - `text`和`ntext`在SQL Server中对应Oracle的`CLOB`和`NCLOB`,用于存储大量文本数据。 - `image`在SQL Server中...

    Sql语言程序设计教程[归类].pdf

    3. 字符串数据类型包括Char、Varchar、Nchar、Nvarchar、Text和Ntext。Char和Nchar是定长字符串,Char存储非Unicode字符,Nchar存储Unicode字符,长度固定,不足部分用空格填充。Varchar和Nvarchar是变长字符串,...

    sql server 和oracle 中数据类型的区别

    11. **VARCHAR2**: 可变长度的非Unicode字符类型,例如`VARCHAR2(10)`,在SQL Server中对应的类型为`nvarchar`。 12. **INTERVAL DAY TO SECOND**: 用于存储时间间隔,例如`INTERVAL DAY(2) TO SECOND(6)`,在SQL ...

    SQL SERVER与C#的数据类型对应表

    5. **Character (char, text, varchar, nchar, ntext, nvarchar)**: 这些是SQL Server的字符和文本类型。`char`和`nchar`是固定长度的字符串,`varchar`和`nvarchar`是可变长度的。`text`和`ntext`用于存储大量文本...

Global site tag (gtag.js) - Google Analytics