SqlServer中char及Varchar,nVarChar和Oracle中varchar2区别及其联系

  • Post author:
  • Post category:其他





数据库中数据类型字符串用到的最多,而我们在选择数据类型的时候,往往会碰到到底选项哪种字符串比较合适,而这些问题,我碰到的次数蛮多,也一直纠结与此,不断的在忘记和复习之间



奔波

”,

今天特意写下来。


本文主要内容有:



1,


SqlServer



char,varchar,text

及其对应的

nchar,nvhar,ntext

的区别和联系。



2,


Orachar



char,varchar2

及其对应的

nchar,nvarchar2

的区别和联系。



3,

存储字符串,

sqlServer



Oracle

相互联系。



首先我们得大致了解字符集Unicode是什么?


我们都知道,计算机只能存储

0



1

这样的位数

(1



Bit

,最小存储单元

)

,而

1byte(

一个字节

)=8



Bit,

通过排列组合,我们知道会有

2*2*2*2*2*2*2*2=256

种可能,每一种排列可能代表一个英文字符或者其他标识,对于英文字符来说

256

种可能代表其符号还有多的,这是美国开始制定第一个字符集


ASCII





但是到中国来

256

种,存储汉字是远远不够的,因此就用

2

个字节来存储,这样就有

256*256=65536

种可能来代表不同的汉字,对于汉字来说,够啦!这个就是中国的字符集

GBK

,为呢满足国际化,美国又弄出呢UniCode字符集的。UniCode字符集用2个字节(

256*256=65536

种可能)来存储东西。这样就能满足绝大部分不同国家,不同的文字标识。这样,你用Unicode字符集在中国书写希腊的文字,放到希腊的计算机中,就自然解析为希腊文字,就不会出现解析不同而乱码。


其次,数据库存储字符,一般有

2种

形式,不可变和可变,其指的是最终存储的值占据的空间大小。


什么叫不可变,演唱会,我给你预留10个空座,不管你来不来,这个空座都是给你留的。


什么叫可变,演唱会,我最多给你预留

10个空座

,你来几个人,用几个空座,如果有多余的,我回收掉。


这里,



Char

就是不可变

(

定长

)




Varchar

就是可变

(

变长

)



那么



Nchar,



nvarchar

呢,演唱会,我知道过来的10个人中有胖子,胖子一个人要做2个空座,但是我不知道你来多少个胖子,所以我给你预留20个空座,这样就不会出现胖子多啦,不够做的情况。


(可能有人说,浪费,我告诉你,现在存储便宜,相对于因为解析而出现乱码来说,值!)


从这就能看出,在这里以

n

开头的数据类型比如

nchar,nvarchar

,就是使用

UniCode(一个字符占2个字节)

来进行编码和解码的。


我给你提供椅子,有数量限制的,对于

char




版权声明:本文为zlhxiaohui原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。