char、varchar、nchar、nvarchar的差异ITeye - 牛牛娱乐

char、varchar、nchar、nvarchar的差异ITeye

2019年03月30日12时24分14秒 | 作者: 浩波 | 标签: 长度,存储,英文 | 浏览: 3025

关于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开树立数据库中,对这四种类型往往比较含糊,这儿做一下比照。
1.定长或变长
所谓定长便是长度固定的,当输入的数据长度没有到达指定的长度时将主动以英文空格在其后边填充,使长度到达相应的长度;有var前缀的,表明是实践存储空间是变长的,比方varchar,nvarchar变长字符数据则不会以空格填充,比较破例的是,text存储的也是可变长。
2.Unicode或非Unicode
数据库中,英文字符只需求一个字节存储就足够了,但汉字和其他很多非英文字符,则需求两个字节存储。假如英文与汉字一起存在,因为占用空间数不同,简单形成紊乱,导致读取出来的字符串是乱码。Unicode字符集便是为了处理字符集这种不兼容的问题而发生的,它所有的字符都用两个字节表明,即英文字符也是用两个字节表明。而前缀n就表明Unicode字符,比方nchar,nvarchar,这两种类型运用了Unicode字符集。
3.依据以上两点来看看字段容量






char,varchar 最多8000个英文,4000个汉字
nchar,nvarchar 可存储4000个字符,不管英文仍是汉字

4.运用(个人偏好)
假如数据量非常大,又能100%确认长度且保存仅仅ansi字符,那么char
能确认长度又不一定是ansi字符或许,那么用nchar;
关于超大数据,如文章内容,运用nText
其他的通用nvarchar

char、varchar、nchar、nvarchar特色比较
•CHAR
CHAR存储定长数据很便利,CHAR字段上的索引功率级高,比方界说char(10),那么不管你存储的数据是否到达了10个字节,都要占去10个字节的空间。
•VARCHAR
存储变长数据,但存储功率没有CHAR高,假如一个字段或许的值是不固定长度的,咱们只知道它不或许超越10个字符,把它界说为 VARCHAR(10)是最合算的。VARCHAR类型的实践长度是它的值的实践长度+1。为什么"+1"呢?这一个字节用于保存实践运用了多大的长度。


从空间上考虑,用varchar适宜;从功率上考虑,用char适宜,关键是依据实践情况找到权衡点。
•TEXT
text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
•NCHAR、NVARCHAR、NTEXT
这三种从姓名上看比前面三种多了个"N"。和char、varchar比较起来,nchar、nvarchar最多存储4000个字符,不管是英文仍是汉字;而char、varchar最多能存储8000个英文,4000个汉字。能够看出运用nchar、nvarchar数据类型时不必忧虑输入的字符是英文仍是汉字,较为便利,但在存储英文时数量上有些丢失。


所以一般来说,假如含有中文字符,用nchar/nvarchar,假如纯英文和数字,用char/varchar。
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章