Oracle 关于 CHAR,VARCHAR,VARCHAR2,nchar,nvarchar 4者的区别使用

别再混淆了!一文搞懂Oracle中CHAR, VARCHAR2, NCHAR, NVARCHAR2的字符与字节存储差异 本文深入解析Oracle中CHAR、VARCHAR2、NCHAR和NVARCHAR2的字符与字节存储差异,帮助开发者避免常见陷阱。通过对比存储机制、字符集依赖和性能影响,提供多语言支持实践和版本演进中的长度限制变化,助力精准选择字符类型,优化数据库设计。 阅读详情

有没有人遇到过,疑惑过关于varchar和varchar2的使用,到底用哪个?为什么区分的问题?

多google一下,差不多就明白了,我就参考别人的讲解一下。

先说,char和nchar的区别。

     一. char(varchar)与nchar(nvarchar)

    1.长度比较:

    使用前者存储,每个英文字符占用一个字节,中文占用两个字节,因此前者最大支持8000个英文字符,4000个中文汉字;

    后者使用Unicode字符集,目的就是为了解决字符集的不兼容性,英文非英文都占用2个字节,因此不论什么字符都只是最大支持4000个字符

    2.功能比较

     可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失

然后是char和varchar的区别。

  二. char(nchar)与varchar(nvarchar)的比较

    1.数据存储开销。

     a. 每个varchar列需要额外的两个字节,用于反映存储的数据的长度。

     b. 每个可为NULL的char列,需要一些字节(空位图)来反应数据的为空性。

     c. 无论实际数据的长度是多少,char按照定义的长度分配存储空间,为定长型。

     d. varchar是变长字符数据类型,根据实际存储的数据长度来分配数据存储空间。

    2.NULL值(空值)。

     a. char列的NULL值占用存储空间。

     b. varcahr列的NULL值不占用存储空间。

     c. 插入同样数量的NULL值,varchar列的插入效率明显高出char列。

    3.插入数据

    无论插入数据涉及的列是否建立索引,char的效率都明显低于varchar。

    4. 更新数据

     如果更新的列上未建立索引,则char的效率低于varchar,差异不大;建立索引的话,效率较高。

    5. 修改结构

     a. 无论增加或是删除的列的类型是char还是varchar,操作都能较快的完成,而且效率上没有什么差异。

     b. 对于增加列的宽度而言,char与varchar有非常明显的效率差异,修改varcahr列基本上不花费时间,而修改char列需要花费很长的时间。

    6.数据检索

     无论是否通过索引,varchar类型的数据检索略优于char的扫描。

最后,就是varchar和varchar2的区别。

说实话,2者没啥,区别,前者是工业标准,后者是oracle自己自定的,在oracle里面会把varchar自定转换成varchar2,所以用oracle一般都是varchar2,不要纠结2者。如果,非要说有啥,区别看下面这段。

VARCHAR
The VARCHAR datatype stores character strings of varying length. The first two bytes contain the length of the character string, and the remaining bytes contain the string. The specified length of the string in a bind or a define call must include the two length bytes, so the largest VARCHAR string that can be received or sent is 65533 bytes long, not 65535. For converting longer strings, use the LONG VARCHAR external datatype. 

VARCHAR2
The VARCHAR2 datatype is a variable-length string of characters with a maximum length of 4000 bytes


简单,翻译过来就是说,varchar只能最大接受存储65533个字节,其中2个字节记录这个变量的长度,

而varchar2最大可以接受4000个字节。这样说,应该差不多明白了吧

在带有Intel Arc GPU的Windows上安装IPEX-LLM 本文将介绍在 Intel Arc GPU 环境下安装 IPEX-LLM。 阅读详情

相关推荐

基于QGIS的DEM地形数据精细化处理:从裁剪、合并到成果输出

本文详细介绍了使用QGIS进行DEM地形数据的精细化处理流程,包括数据获取、裁剪、合并及成果输出等关键步骤。通过实战技巧和注意事项,帮助用户高效处理地形数据,适用于GIS分析、三维建模等应用场景。

weixin_29093017的博客 449

varchar长度详解

oracle中 VARCHAR2() 长度限制 VARCHAR2(4 char) 可以存储4个汉字或者4个数字/字母 VARCHAR2(4 ) 可以存储2个汉字或者4个数字/字母 char varchar varchar2 的区别区别:   1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将

tobeistdo的专栏 2382

用ESP32-S3打造迷你录音笔:SPIFFS存储+INMP441麦克风全流程解析

本文详细解析了如何使用ESP32-S3微控制器与INMP441数字麦克风构建迷你录音笔。内容涵盖硬件选型、I2S驱动配置、SPIFFS文件系统存储管理以及WAV格式封装等全流程,重点探讨了在资源受限的嵌入式设备上实现高质量语音采集与存储的优化方案和实战技巧。

qq_27496129的博客 1365

Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用

一 varchar,nvarchar, 四个类型都属于变长字符类型, varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节。 nvarchar和nvarchar2的区别和上面一样, 与上面区别在于是根据Unicode 标准所进行的定义的类型,通常用于支持多国语言类似系统的定义。 1.char char的长度是固定的,比如说,你定...

winie 765

高通Camx功能feature分析之八:高通NCS服务之架构和初始化

本文介绍了高通NCS(NONCameraSensor)服务的架构与初始化流程。NCS服务通过QMI接口访问非相机传感器,为CameraEIS、AEC等算法节点提供陀螺仪、加速度计等传感器数据支持。文章详细解析了NCS服务的分层架构,包括客户端、服务端、QSEE接口实现等组件,并重点分析了初始化过程中获取传感器列表、查询能力等关键步骤。通过camxsetting.xml中的enableNCSService开关控制服务启动,初始化过程涉及QSEE单例创建、传感器能力查询等核心操作。后续文章将继续深入讲解相关技术

925

水文仿真软件:HEC-RAS (Hydrologic Engineering Center‘s River Analysis System)_(7).一维非稳态水力模型

自定义脚本是通过编程语言(如 Python)编写的一系列自动化任务,可以帮助用户更高效地处理数据和运行模型。编写脚本:使用 Python 或其他编程语言编写自定义脚本。集成脚本:将脚本集成到 HEC-RAS 中,实现自动化数据处理和模型运行。

kkchenjj的博客 928

Oracle中varchar2(4 char)与varchar2(4)的区别

在数据库中字段长度的设计是很很重要的,字段长度设计太长就会造成存储空间浪费,太短就会使数据存储不下,所以在设计字段长度时要慎重。 这里我们看下varchar2(4 char)与varchar2(4)的区别: (1)varchar2 (4 char) 如果你存储的内容长度不够4个字符在存储的时候会自动填补空格 (2)varchar2 (4) 是可变长度的,所占空间长...

yangtaohongyang的博客 1808

三维重建/SLAM笔记_最佳学习路线/攻略

本文目的 学习三维重建,需要不少知识,而知识之间又存在不同的依赖关系,为了后来人能少走弯路,也为了对自己的知识框架系统总结,特记录自己的学习路线。 学习心得 关于读书,了解基础知识是一方面,产生疑问也是一方面,为以后知道学习什么留下印象; 一回生,二回熟,看不懂时,大多是因为先验知识不够,没关系,多查多想,总会搞懂的。 学习路线 1.计算机图形学基础(OpenGL基础版)(徐文鹏 清...

惊鸿一博 3290

oracle中的char、varchar、varchar2、nvarchar、nvarchar2区别

oracle中的char、varchar、varchar2、nvarchar、nvarchar2区别

master_yao的博客 2万+

【超详细】计算机操作系统总结及思维导图(汤子瀛版)

计算机操作系统 一.操作系统引论 1.操作系统的目标和功能 目标 方便性 有效性 提高系统资源利用率 提高系统吞吐量 可扩充性 开放性 作用 OS作为用户与计算机硬件系统之间的接口 命令方式 系统调用方式 图标–窗口方式 OS实现了对计算机资源的抽象 2.操作系统的发展过程 未配置操作系统的计算机系统 人工操作方式 用户独占全机 CPU等待人工操作 严重降低...

圣三一 2万+

CKS-CN考试之路----03

这题不需要去生成image和生成deployment所以只需要去检测对应的值即可。编辑/cks/docker/Dockerfile,修改最后第二行的值。编辑/cks/docker/deployment.yaml。

Q先生 823

Oracle字符串类型char,nchar,varchar2,nvarchar2区别

网上对于这几个字符串类型的对比文章很多,有些还对比错了。我现在写这篇文章,不是为了批评什么。我只是把书本中看到的知识简单总结出来,再偷偷打上[原创]标签而已... 很多新手可能不知道char和varchar2的定义格式其实是varchar2  char,除了指定size大小以外,还要指定一个类型。 请看下面分解: 1、定长和变长区别 char,nchar是定长类型,例如char(12),如

妈妈说有这么一群人 4801

Vue Print Designer——一款让打印模板的设计变简单的可视化打印设计器

Vue Print Designer——一款让打印模板的设计变简单的可视化打印设计器

bjzhang75的博客 682

Oracle字段类型char、varchar2、nvarchar2的区别与使用

1、和VARCHAR不同的是,VARCHAR2把空串等同于null处理,这也是为什么ORACLE推荐使用VARCHAR2类型的原因。存储大小是输入数据的实际长度加 2 个字节,用于反映存储的数据的长度。例如varchar2(3 char),可以存储3个字符(包括字母和汉字),如'啊啊啊'、'aaa'、'啊aa',与字节(byte)长度无关;与上面不同的是,是根据Unicode标准所进行的定义的类型,通常用于支持多国语言类似系统的定义。固定长度,非 Unicode 字符数据,长度为 n 个字节。

xiying15270873284的博客 9477

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Oracle中的CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2

(1)Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2 URL:http://blog.163.com/blade_ralf/blog/static/89741687200962064628485/Oracle   2009-07-20 18:46    在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别1.CHAR(size)和VARCHAR(size)的区别    CHAR为定长的字段,最大长度为2K字节; 

zhoubo200的专栏 1315

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ORACLE CHAR,VARCHAR,VARCHAR2,NVARCHAR类型的区别与使用

区别:   1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。   2.CHAR的效率比VARCHAR2的效率稍高。   3.目前VARCHAR是VARCHAR2

xiaomin1991222的专栏 5272

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Oracle中varchar,varchar2,nvarchar,nvarchar2的区别及其它数据类型描述

Oracle中数据类型描述

PinkCoder 4822

ORACLE字符类型详解----char、nchar、varchar、varchar2、nvarchar2

oracle数据库字段类型为 char:使用数据库字符集来存储数据,长度固定,如果存储的数据没有达到指定长度,自动补足空格。

qq_14959289的博客 2157

Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2

在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别 1.CHAR(size)和VARCHAR(size)的区别     CHAR为定长的字段,最大长度为2K字节;     VARCHAR为可变长的字段,最大长度为4K字节; 2.CHAR(size)和NCHAR(size)的区别     CHAR如果存放字母数字占

阿泰 930

字段char、varchar、varchar2、nvarchar2的区别

oracle(char 、varchar、varchar2 、nvarchar2) varchar和varchar2 varchar存储固定长度的字符数据 最长2000字节 效率高 占空间 varchar2存储可变长度的字符数据 最长4000字节 效率低 省空间 varchar2和nvarchar2 VARCHAR2(size type),size最大为4000,type可以是char...

Demis_demis的博客 1233

Oracle的varchar2、nvarchar2和mysql的varchar

Oracle 随后将按照您指定的方式将每个值存储在列中,前提是该值不超过该列的最大长度。但最多占65532字节(两个字节存放长度,小于255字节用1个字节存放长度),varchar(n)这里的n表示字符数,比如varchar(200),不管是英文还是中文都可以存放200个。当您创建包含列的表时NVARCHAR2,最大大小始终采用字符长度语义,这也是该NVARCHAR2数据类型的默认且唯一的长度语义。首先,VARCHAR2的最大大小可以是字节或字符,而NVARCHAR2的最大大小只能是字符。

yuangit的博客 4740

【Oracle】Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2字符总结

varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节。 nvarchar和nvarchar2的区别和上面一样,   与上面区别在于是根据Unicode   标准所进行的定义的类型,通常用于支持多国语言类似系统的定义。 1.char char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面

gavinvong的专栏 730

Oracle中CHAR、VARCHAR的区别

1、CHAR。   CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim()。 2、VARCHAR。   存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把

惊鸿一瞥 3697
上一篇: 字符编码区别:ASCII,Unicode和UTF-8
下一篇: 一个简洁的全排列算法--递归实现
Scofield-
博客等级 码龄14年 12粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值