码迷,mamicode.com
首页 > 数据库 > 详细

Oracle汉字占用字节数的问题

时间:2015-03-14 13:39:39      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

在oracle中一个字符特别是中文字符占几个字节是与字符集有关的。
     比如GBK,汉字就会占两个字节,英文1个;如果是UTF-8,汉字一般占3个字节,英文还是1个。但是一般情况下,我们都认为是两个字节处理,因为oracle安装时候默认我们都选择GBK的编码格式,但是我们在页面做输入字符串长度的校验的时候,还是以数据库设计字段最大长度除3来作为最大长度-----防止数据库移植时设置不同编码格式。
   
查看字符串占用的字符数:
select length(‘12中华‘) from dual;     --4
查看字符串占用的字节数:
select lengthb(‘12中华‘) from dual;   --8
 
nvarchar2的一个汉字字符都是占用两个字节的,与字符集无关:
select length(N‘中华1‘) from dual;     --3 
select lengthb(N‘中华1‘) from dual;   --6
 
补充:
(1)
查询字符集语句: select userenv(‘language‘) from dual;    (SIMPLIFIED CHINESE_CHINA.AL32UTF8)
查询结果分为三部分: NLS_LANG = language_territory.charset 它有三个组成部分(语言、地域和字符集), 其中: Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集 。
 
(2)如何查看Oracle的字符集,日期格式,语言等?
SYS>show parameter nls;    --得不到具体全面的value
SYS>select * from nls_database_parameter;   --nls_database_parameter表才是最详细的

Oracle汉字占用字节数的问题

标签:

原文地址:http://www.cnblogs.com/createmyobject/p/4337370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!