Oracle数据库的varchar2(2)存储一个汉字时提示插入汉字过长问题
来源:互联网 发布:ubuntu如何安装eclipse 编辑:程序博客网 时间:2024/06/04 18:31
昨天在oracle实验课上出现了如题所示的问题:varchar2(2)在存储一个汉字时,提示插入汉字过长,要把它改成3才能存储1个汉字。于是百度google之。
先做以下实验:
建一个简单的表var,只有一列name,数据类型为varchar2(6),并向表中插入一条数据。
- create table var (name varchar2(6));
- insert into var values('测试');
查询插入的数据,并且同时查看name列的字符长度和字节长度。结果如下图:
- select u.name, length(u.name), lengthb(u.name)
- from var u;
从结果中可以看出,一个汉字占了三个字节,而不是两个,这跟字符集有关。
查看字符集的代码和结果如下:
- select userenv('language') from dual;
结果显示,本机Oracle的字符集是UTF-8,32位,而不是GBK的16位。UTF-8的每个字符占3个字节(bytes),可以通过修改默认字符集来实现varchar2(2)存储一个汉字。方法如下:
- SHUTDOWN IMMEDIATE;
- STARTUP MOUNT;
- ALTER SYSTEM ENABLE RESTRICTED SESSION;
- ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
- ALTER DATABASE OPEN;
- ALTER DATABASE CHARACTER SET AL32UTF8/ZHS16GBK;
- SHUTDOWN IMMEDIATE;
- STARTUP;
主要参考资料:http://dev.tot.name/db/html/20090322/20090322131055.htm
http://www.linuxdiyf.com/viewarticle.php?id=88548
附:
ORACLE nvarchar2和varchar2的区别
1、NVARCHAR2中存储中文字时,一个中文字当一个字符来处理
NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符。
2、而VARCHAR2中一个中文字当两个字符来处理
VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个
Oracle中nvarchar2和varchar2的共同点:
不定长存储,当存储信息长度小于指定的长度,那么就已实际存入的长度为准这一点不像varchar这种定长存储那样浪费空间,比如varchar 指定是10个字符,那么存入5个字符的时候,他会自动填充空格来补齐以达到指定的长度
0 0
- Oracle数据库的varchar2(2)存储一个汉字时提示插入汉字过长问题
- Oracle数据库的varchar2(2)存储一个汉字时提示插入汉字过长问题
- Oracle的varchar2(4000)插入汉字过长
- Oracle的varchar2(4000)插入汉字过长
- Oracle定义varchar2()类型存储汉字的长度问题
- Oracle定义varchar2()类型存储汉字的长度问题
- Oracle定义varchar2()类型存储汉字的长度问题
- Oracle定义varchar2()类型存储汉字的长度问题
- Oracle定义varchar2()类型存储汉字的长度问题
- 字符集合决定varchar2的长度--Oracle定义varchar2()类型存储汉字的长度问题
- oracle中的varchar2存放汉字的问题总结
- oracle中的varchar2存放汉字的问题总结
- oracle varchar2存汉字出现问题
- oracle 插入汉字时字符编码问题
- 关于往数据库插入汉字时,显示乱码的问题
- oracle的varchar2(4000)可以存储2000个汉字或者4000个英文字符? .
- Oracle数据库中汉字长度的问题
- python汉字字符串插入数据库的乱码问题
- java数组(定义、赋值和初始化)
- iOS之AutoresizingMask, autoresizesSubviews
- Hbase 学习笔记: Hbase的架构和实现原理
- PHP simplexml解析结果需要进行强制类型转换
- bzoj1042_递推加容斥原理
- Oracle数据库的varchar2(2)存储一个汉字时提示插入汉字过长问题
- CXF学习笔记(1)-HelloWorld!-发布webservice .
- 表单提交检测
- PHP通用分页(Pager)类
- Android 修改drawableTop 图片的大小
- ios--图片处理(修改、保存)
- Android开源项目和框架
- 无论发生什么都不要失望,不要丢掉希望
- iOS7中容易被忽视的新特性