知识大全 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支持国家语言的体系结构允许你使用本地化语言来存储处理检索数据它使数据库工具错误消

知识大全 全面认识Oracle数据库字符集

全面认识Oracle数据库字符集  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  什么是Oracl

知识大全 oracle笔记之简单查询、限定查询和排序

  别名  oracle别名如果别名包含空格特殊字符(如#$)或需区分大小写(Name)需要用双引号把别名引起来  selectenameName  sal*AnnualSalary  fromemp

知识大全 巧妙转换ORACLE数据库字符集

巧妙转换ORACLE数据库字符集  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在大型数据库管理

知识大全 Oracle在数据转储时的字符集问题

Oracle在数据转储时的字符集问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作为一个Or

知识大全 Oracle数据库字符集问题解决方案大全

Oracle数据库字符集问题解决方案大全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在国内外

知识大全 oracle附加的字符串

  现在你可以通过字符串建立索引提高性能  许多PL/SQL程序对数据进行操作通常是通过使用SQL在数据库中直接操作数据你经常还需要在PL/SQL程序本身内声明和管理数据这个程序数据可能由一些单独的值

知识大全 Oracle9i中如何建立不同字符集的数据库

Oracle9i中如何建立不同字符集的数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在安

知识大全 修改oracle9i数据库字符集的方法

  SQL>selectnamevalue$fromprops$wherenamelike%NLS%;  SQL>alterdatabasecharactersetzhsgbk;alter

知识大全 Oracle基本数据类型存储格式浅析(一)-字符类型

Oracle基本数据类型存储格式浅析(一)-字符类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!