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

varchar(N)中是可以存储N个字节,而varchar(N char)是可以存储N个字符

1、varchar2(N):可以存储N byte长度,与字符数无关;例如varchar2(3),可以存储3个byte长度,如'啊a'、'aaa',与字符数无关;

2、varchar2(N char):可以存储N个字符(包括字母和汉字),与字节(byte)长度无关;例如varchar2(3 char),可以存储3个字符(包括字母和汉字),如'啊啊啊'、'aaa'、'啊aa',与字节(byte)长度无关;

测试如下:

--创建测试表vctest1和vctest2
create table vctest1(  c1 varchar2(10) );
create table vctest2(  c1 varchar2(10 char) );

vctest1插入测试

insert into vctest1 values('AAAAAAAAAA');--插入成功
--一个汉字占用两个字节
insert into vctest1 values('测试测试测');--插入成功

--插入11个字符,错误如下图
insert into vctest1 values('AAAAAAAAAAA');

image

--插入6个汉字,错误如下图
insert into vctest1 values('测试测试测试');

image

vctest2插入测试

--分别插入10个字母或者10个汉字,插入成功
insert into vctest2 values('AAAAAAAAAA');
insert into vctest2 values('测试测试测试测试测试');

--插入11个字符或者11个汉字,均报以下错误
insert into vctest2 values('AAAAAAAAAAA');
insert into vctest2 values('测试测试测试测试测试测');

image

测试完成,删除测试表

drop table vctest1;
drop table vctest2;


参考:

https://blog.csdn.net/su377486/article/details/69617472

https://blog.csdn.net/yangliehui/article/details/49486791

posted on   jingkunliu  阅读(933)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
历史上的今天:
2017-09-23 异常:Project configuration is not up-to-date with pom.xml 解决方案

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示