zoukankan      html  css  js  c++  java
  • Char 和 Varchar 与 nchar 和 nvarchar 最终总结比较

    最近发现自己经常会把这几个字义不时模糊起来,所以自己整理了一下这方面文章。先从MSDN拿出定义出来,理论知识先要看懂
    char [ ( n ) ]

    固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节。char 的 SQL 2003 同义词为 character。

    varchar [ ( n | max ) ]

    可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。存储大小是输入数据的实际长度加 2 个字节。所输入数据的长度可以为 0 个字符。SQL-2003 中的 varchar 就是 char varying 或 character varying。

    nchar [ ( n ) ]

    n 个字符的固定长度的 Unicode 字符数据。n 值必须在 1 到 4,000 之间(含)。存储大小为两倍 n 字节。nchar 的 SQL-2003 同义词为 national char 和 national character。

    nvarchar [ ( n | max ) ]

    可变长度 Unicode 字符数据。n 值在 1 到 4,000 之间(含)。max 指示最大存储大小为 2^31-1 字节。存储大小是所输入字符个数的两倍 + 2 个字节。所输入数据的长度可以为 0 个字符。nvarchar 的 SQL-2003 同义词为 national char varying 和 national character varying。

            大家从以上定义可以看到,char,varchar与nchar,nvarchar只是多了一个N而已,再细看,原来一个是非Unicode流,一个Unicode流。由此我们可以看出,Unicode字符流,无论我们输入字符,数字还是汉字,都是以两个字节存储。而非Unicode字符流却相反,每个英文字符和数字都占一个字节,而一个中文的字符会占两个字节。

    以上理解清楚后,我们再来看看char与varchar的区别

            CHAR的长度是固 定的,而VARCHAR的长度是可以变化的, 比如,存储字符串“aaa",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。由于char是以固定长度的,所以它的速度会比 varchar快得多!但程序处理起来要麻烦一点,要用Trim之类的函数把两边的空格去掉!           

            如果列数据项的大小可能相同,请使用 char。如果列数据项的大小可能差异很大,请使用 varchar。同理,nchar与nvarchar的区别也是一样。这里我就不多说了。

  • 相关阅读:
    JavaScript类属性
    JavaScript实现通过的集合类
    Asp.net mvc自定义Filter简单使用
    [转] js实现html table 行,列锁定
    学习笔记:HTML5 Canvas绘制简单图形
    学习笔记:Asp.Net MVC更新部分页面
    Dom随手记
    页面刷新或关闭前警告
    C# 创建WebServices及调用方法
    常用Web Service汇总(天气预报、时刻表等)
  • 原文地址:https://www.cnblogs.com/ulex/p/1527944.html
Copyright © 2011-2022 走看看