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

本文详细介绍了SqlServer中的char, varchar, nvarchar, text以及Oracle中的char, varchar2, nvarchar2之间的区别和联系。重点讨论了Unicode字符集、定长与变长存储、存储空间和索引效率。对于包含中文的情况,建议使用nchar或nvarchar以防止乱码。" 78628340,153816,C# Monitor深入解析:Wait、Pulse与PulseAll,"['C#编程', '多线程', '并发控制', '同步原语']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

本文主要内容有:

1,  SqlServerchar,varchar,text及其对应的nchar,nvhar,ntext的区别和联系。

2,  Oracharchar,varchar2及其对应的nchar,nvarchar2的区别和联系。

3,  存储字符串,sqlServerOracle相互联系。

 

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

       我们都知道,计算机只能存储01这样的位数(1Bit,最小存储单元),而1byte(一个字节)=8Bit,通过排列组合,我们知道会有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个字节)来进行编码和解码的。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值