知识大全 oracle数据字符集和排序
Posted 时间
篇首语:智慧并不产生于学历,而是来自对于知识的终生不懈的追求。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 oracle数据字符集和排序相关的知识,希望对你有一定的参考价值。
今天难得有点小时间 实际操作了一下关于oracle数据库中的字符集和排序相关的命令 特此整理出来 以备后用
Java代码
SQL> select * from v$nls_valid_values where parameter= CHARACTERSET order by ;
PARAMETER VALUE
CHARACTERSET AL UTF
CHARACTERSET AL UTFFSS
CHARACTERSET AL UTF
SQL> select * from nls_database_parameters;
PARAMETER VALUE
NLS_LANGUAGE AMERICAN 合法的语言名称
NLS_TERRITORY AMERICA 合法的地域名称
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS
NLS_CHARACTERSET ZHS GBK 数据库字符集
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD MON RR 日期格式
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY 排序方式
NLS_TIME_FORMAT HH MI SSXFF AM
NLS_TIMESTAMP_FORMAT DD MON RR HH MI SSXFF AM
NLS_TIME_TZ_FORMAT HH MI SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD MON RR HH MI SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_P BINARY 和排序相关的东东 具体是什么不清楚
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL UTF 国家字符集
NLS_RDBMS_VERSION
已选择 行
已用时间: : :
SQL> create table char_t(c varchar ( ) c nvarchar ( ));
表已创建
已用时间: : :
SQL> select dbms_metadata get_ddl( TABLE CHAR_T ) FROM DUAL;
DBMS_METADATA GET_DDL( TABLE CHAR_T )
CREATE TABLE SCOTT CHAR_T
( C VARCHAR ( )
C NVARCHAR ( )
) PCTFREE PCTUSED INITRANS MAXTRANS NOPRESS LOGGING
STORAGE(INITIAL NEXT MINEXTENTS MAXEXTENTS
PCTINCREASE FREELISTS FREELIST GROUPS BUFFER_POOL DEFAULT)
TABLESPACE USERS
已用时间: : :
SQL> INSERT INTO char_t values( a a );
已创建 行
已用时间: : :
SQL> mit;
提交完成
已用时间: : :
SQL> select length(c ) length(c ) lengthb(c ) lengthb(c ) from char_t;
LENGTH(C ) LENGTH(C ) LENGTHB(C ) LENGTHB(C )
已用时间: : :
SQL> insert into char_t values( 中 中 );
已创建 行
已用时间: : :
SQL> select length(c ) length(c ) lengthb(c ) lengthb(c ) from char_t;
LENGTH(C ) LENGTH(C ) LENGTHB(C ) LENGTHB(C )
已用时间: : :
SQL> insert into char_t values( 遽 遽 );
已创建 行
已用时间: : :
SQL> select length(c ) length(c ) lengthb(c ) lengthb(c ) from char_t;
LENGTH(C ) LENGTH(C ) LENGTHB(C ) LENGTHB(C )
已用时间: : :
至于一个VARCHAR 字符要用几个字节存储 要看数据库使用的字符集
比如GBK 汉字就会占两个字节 英文 个 如果是UTF 汉字一般占 个字节 英文还是 个
而NCHAR NVARCHAR是以UNICODE 存储 每个字符固定两个字节
SQL> select hiredate from emp;
HIREDATE
DEC
FEB
FEB
APR
SEP
SQL> show user;
USER is SCOTT
SQL> alter session set nls_language= simplified chinese
会话已更改
已用时间: : :
SQL> select hiredate from emp;
HIREDATE
月
月
月
月
已用时间: : :
查看session中支持的语言名称
* select * from v$nls_valid_values where parameter= LANGUAGE order by
QL> /
ARAMETER VALUE
ANGUAGE AMERICAN
ANGUAGE ARABIC
ANGUAGE ASSAMESE
ANGUAGE AZERBAIJANI
ANGUAGE BANGLA
ANGUAGE BENGALI
ANGUAGE BRAZILIAN PORTUGUESE
查看合法的地域名称
SQL> select * from v$nls_valid_values where parameter= TERRITORY order by ;
PARAMETER VALUE
TERRITORY ALGERIA
TERRITORY AMERICA
TERRITORY AUSTRIA
TERRITORY AZERBAIJAN
TERRITORY CANADA
TERRITORY CATALONIA
TERRITORY CHILE
TERRITORY CHINA
查看合法的排行名称
SQL> select * from v$nls_valid_values where parameter= SORT order by ;
PARAMETER VALUE
SORT SCHINESE_PINYIN_M
SORT SCHINESE_RADICAL_M
SORT SCHINESE_STROKE_M
查看当前会话的排行模式(系统默认的排行方式是 BINARY)
SQL> select value from nls_session_parameters where parameter= NLS_SORT ;
VALUE
BINARY
修改排行方式的测试
SQL> alter session set nls_sort= SCHINESE_PINYIN_M ;
会话已更改
已用时间: : :
SQL> select * from sort_tab order by ;
C
啊
藏 这个是个多音字 在此处oracle把他当cang了
木
目
人
三
一
已选择 行
已用时间: : :
SQL> alter session set NLS_SORT= SCHINESE_STROKE_M ; 按照笔划(第一顺序) 部首(第二顺序)排序
会话已更改
已用时间: : :
SQL> select * from sort_tab order by ;
C
一
人
三
木
目
啊
藏
已选择 行
已用时间: : :
SQL> alter session set NLS_SORT= GBK ;
会话已更改
已用时间: : :
SQL> select * from sort_tab order by ;
C
啊
藏
木
目
人
三
一
已选择 行
已用时间: : :
SQL> alter session set NLS_SORT= SCHINESE_RADICAL_M ; 按照部首(第一顺序) 笔划(第二顺序)排序
会话已更改
已用时间: : :
SQL> select * from sort_tab order by ;
C
一
三
人
啊
木
目
藏
已选择 行
已用时间: : :
SQL> ALTER SESSION SET NLS_SORT=BINARY; 按字符的二进制值比较
会话已更改
已用时间: : :
SQL> select * from sort_tab order by ;
C
啊
藏
木
目
人
三
一
已选择 行
已用时间: : :
注意 如果NLS_SORT不是设置为 Binary 那么就会引起全表扫描
是不会使用索引的 在我们的系统中变更单涉及到的数据都是数据庞大的表
如果不使用到索引 查询的效率不受到影响才怪呢!
修改数据库字符集
alter database orcl character set ZHS CGB ;
修改国家语言字符集
cha138/Article/program/Oracle/201311/18856相关参考
一什么是oracle字符集 Oracle字符集是一个字节数据的解释的符号集合有大小之分有相互的包容关系ORACLE支持国家语言的体系结构允许你使用本地化语言来存储处理检索数据它使数据库工具错误消
全面认识Oracle数据库字符集 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 什么是Oracl
别名 oracle别名如果别名包含空格特殊字符(如#$)或需区分大小写(Name)需要用双引号把别名引起来 selectenameName sal*AnnualSalary fromemp
巧妙转换ORACLE数据库字符集 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在大型数据库管理
Oracle在数据转储时的字符集问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 作为一个Or
Oracle数据库字符集问题解决方案大全 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在国内外
现在你可以通过字符串建立索引提高性能 许多PL/SQL程序对数据进行操作通常是通过使用SQL在数据库中直接操作数据你经常还需要在PL/SQL程序本身内声明和管理数据这个程序数据可能由一些单独的值
Oracle9i中如何建立不同字符集的数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在安
SQL>selectnamevalue$fromprops$wherenamelike%NLS%; SQL>alterdatabasecharactersetzhsgbk;alter
知识大全 Oracle基本数据类型存储格式浅析(一)-字符类型
Oracle基本数据类型存储格式浅析(一)-字符类型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!