暂无图片
oracle数据库,varchar2(10)只能存储两个汉字?
我来答
分享
Yanhong
2021-09-01
oracle数据库,varchar2(10)只能存储两个汉字?

oracle数据库,varchar2(10)只能存储两个汉字?oracle11g
1.png
网上说ZHS16GBK是2字节编码
那么varcha2(10)应该最多可以存储5个汉字,
2.png
问题一:执行上述操作时,只能看到两个汉字
3.png
问题二:图形化界面新增记录,ename最多输入三个汉字
想输入:唐老鸭呀,四个汉字,标红
输入:唐老鸭,就没有问题
4.png
只能想到是字符集的问题
但是2字节编码的话,和上述问题是冲突的
请不吝赐教!!

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
Lucifer三思而后行
暂无图片

我使用 oracle 的客户端工具 sqldeveloper 做了下测试:

数据库字符集:ZHS16GBK

select * from nls_database_parameters;
复制

image.png

建表:

create table lucifer(id number,text varchar2(10));
复制

image.png

插入数据:

insert into lucifer values (1,'好可爱'); insert into lucifer values (1,'好可爱哈哈');
复制

image.png

结论:5个汉字均可插入。

image.png

从以上报错可以看出,是一个汉字2个字节。

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
Lucifer三思而后行
暂无图片

你这个感觉是PLSQL的问题吧,建议你使用sqlplus进行测试。

这个是由数据库的字符集决定的:

  • 如果是中文,ZHS16GBK,每个汉字占2个字节,所以最多5个汉字。

  • 如果是英文,AL32UTF8,每个汉字占3个字节,所以最多3个汉字。

建议查看字符集:

select * from nls_database_parameters;
复制
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏