你好,游客 登录 注册 搜索
背景:
阅读新闻

Oracle数据库字符集研究

[日期:2014-03-06] 来源:Linux社区  作者:Linux [字体: ]

Oracle服务器:

select * from NLS_database_PARAMETERS where parameter like '%CHARACTERSET%';
PARAMETER                      VALUE                                 
------------------------------ ----------------------------------------
NLS_CHARACTERSET              WE8MSWIN1252                           
NLS_NCHAR_CHARACTERSET        AL16UTF16 

表t1:

desc t1;
Name Null Type         
---- ---- --------------
ID        NUMBER       
NAME      NVARCHAR2(100)

SQL Developer 查询和insert中文

C:\sqldeveloper\sqldeveloper\bin\sqldeveloper.conf

AddVMOption -Doracle.jdbc.convertNcharLiterals=true

Preference -- > Environment, Encoding选择UTF-16

ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE';
TRUNCATE TABLE T1;
INSERT INTO T1 VALUES(1,N'啊');
insert into t1 values(2, '啊');
COMMIT;
col name format a10;
select * from t1;

ID NAME
---------- ----------
1 啊

2 ¿

N'啊'表示nvarchar类型的数据。

以下内容未测试过:

JDBC的配置

-Doracle.jdbc.defaultNChar=true
-Doracle.jdbc.convertNcharLiterals=true

Linux下SQLPlus

NLS_LANG=AMERICAN_AMERICA.AL32UTF8
LC_CTYPE="zh_CN.utf8"
ORA_NCHAR_LITERAL_REPLACE=true

varchar2的长度

varchar2 类型的字段长度以字符或字节来计算,如varchar2(10 byte), varchar2(10 char)。通常,byte/char都被省略,这时NLS_LENGTH_SEMANTICS定义了默认值。

show parameters NLS_LENGTH_SEMANTICS;
NAME                TYPE        VALUE
-------------------- ----------- ----
nls_length_semantics string      BYTE

数据库的字符集

select * from nls_database_parameters where parameter like '%CHARACTER%'
PARAMETER                VALUE       
------------------------- -----------
NLS_NUMERIC_CHARACTERS    .,         
NLS_CHARACTERSET          AL32UTF8   
NLS_NCHAR_CHARACTERSET    AL16UTF16   

AL32UTF8编码的字符长度是可变的,1-4字节,ASCII字符是1字节。如下所示:

desc t2;
Name  Null Type       
----- ---- -----------
TNAME      VARCHAR2(2)

select * from t2;
TNAME
-----
12   

可以看出数字1和2各占一个字节。

查看某字符在当前字符集下的字节数

select lengthb ('C'), lengthb('啊'), length('\r') FROM DUAL;
LENGTHB('C') LENGTHB('啊') LENGTH('\R')
------------ ------------ ------------
          1            3            2

更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

 

linux
相关资讯       Oracle字符集 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款