• 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的区别也是一样。这里我就不多说了。

  • 相关阅读:
    第一天
    python自测——其他内容
    python自测——正则表达式
    python自测——高级特性
    人机对战石头剪刀布代码
    [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家
    Dijkstra概念
    洛谷p1339--热浪
    0-1背包问题变形------------cow exhibition
    [Poi2005]Piggy Banks小猪存钱罐
  • 原文地址:https://www.cnblogs.com/ulex/p/1527944.html
Copyright © 2020-2023  润新知