Oracle中字符集的类型决定varchar2的字符长度
来源:互联网 发布:摆摊打印照片软件 编辑:程序博客网 时间:2024/05/21 01:28
1.前几天往数据库表里面插入数据的报了一个这样的错误如下:
SQL> insert into student values('中华人民共和',60);
insert into student values('中华人民共和',60)
*
第 1 行出现错误:
ORA-12899: 列 "SYSTEM"."STUDENT"."NAME" 的值太大 (实际值: 12, 最大值: 6)
本来建立表的时候字符长度就设置为6了,可是插入六个中文的时候就是报错,表结构如下:
SQL> desc student;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(6)
AGE NUMBER(3)
后来经过查了大量的资料之后发现,varchar2的长度是有字符集的类型决定的。
内容如下:
varchar2最大是4000字节,那么就看你的Oracle字符集,如果字符集是16位编码的,ZHS16GBK,那
么每个字符16位,2字节,可以容纳一个中文字符,所以可以容纳2000字符。如果是AL32UTF8编码的字符集,三个字节为一个中文字符,那么只能存储 1333个字符。
2.查看字符集的类型的语句:
SQL> set wrap off;
SQL> select parameter,value from nls_database_parameters where parameter like 'NLS_CHARACTERSET';
PARAMETER VALUE
------------------------------ -------------------------------------------------
NLS_CHARACTERSET ZHS16GBK
所以上面插入的字符就只能是3个中文字符。
如果将上面的字符编码改为32位编码的,则只能存入1.5个中文字符。
3.10 查看新建数据库的字符集设置
SQL> set wrap off
SQL> set lines 1000
SQL> select * from nls_database_parameters;
4.可以用update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';
来修改字符集
5.如果字符集为AL32UTF8,可以看出下面的例子为,每个中文占用三个字节。
SQL> select lengthb('中') from dual;
LENGTHB('中')
-------------
3
- oracle中字符集的类型决定varchar2的字符长度
- Oracle中字符集的类型决定varchar2的字符长度
- 字符集合决定varchar2的长度--Oracle定义varchar2()类型存储汉字的长度问题
- ORACLE中VARCHAR2类型的字段长度
- 关于oracle中varchar2的最大长度
- 关于oracle中varchar2的最大长度
- 关于oracle中varchar2的最大长度
- 关于oracle中varchar2的最大长度
- 关于oracle中varchar2的最大长度
- 关于oracle中varchar2的最大长度
- 关于oracle中varchar2的最大长度
- 关于oracle中varchar2的长度范围
- Oracle的varchar2类型最大长度为4000, PLSQL的varchar2最大长度为32762
- Oracle中varchar2类型的字段长度是按照byte来定义的
- Oracle定义varchar2()类型存储汉字的长度问题
- Oracle定义varchar2()类型存储汉字的长度问题
- Oracle定义varchar2()类型存储汉字的长度问题
- Oracle定义varchar2()类型存储汉字的长度问题
- 线段DF的长度的取值范围
- jQuery名字
- #define 后只有一个参数
- More is better
- c# Invoke和BeginInvoke 区别
- Oracle中字符集的类型决定varchar2的字符长度
- 七大经典排序-序
- linux tail命令
- wxpython listbox multiselection
- HDU 1307 搜索
- C#时间/日期格式
- 调试技巧
- SQLServer系统函数(3)_日期与时间函数
- java--IO流