zoukankan      html  css  js  c++  java
  • ORACLE NLS_LENGTH_SEMANTICS 参数的用途

    NLS_LENGTH_SEMANTICS参数是一个专为创建CHAR和VARCHAR2两种字符型的列时,指定使用的字节长度,还是使用字符长度的定义方式,有byte和char两种值,默认为byte。

    当设置该参数为BYTE时,定义CHAR列或VARCHAR2列采用字节长度方式;当设置该参数为CHAR时,定义CHAR列或VARCHAR2列采用字符长度的方式。该参数对于数据库中已经存在的列不具备任何用途,只是在创建表,或修改表的列时才具有意义。

    NLS_LENGTH_SEMANTICS参数的值,不对已经存在的列产生任何影响,只是在创建表中的列时,默认的指定列长度类型为byte还是char,如果在创建或修改表的列时指定了长度类型,完全覆盖NLS_LENGTH_SEMANTICS参数的值。

    下面以三条create table的语句说清楚NLS_LENGTH_SEMANTICS参数的用途:

    1. 两条指定长度类型的SQL语句

    create table tab_t(t_name varchar2(20byte));
    
    create table tab_t(t_name varchar2(20char));

    上面两条语句,唯一的不同,就是在指定列长度为20后,再指定长度的类型,类型的值不同。

    2. 不指定长度类型的SQL语句

    create table tab_t(t_name varchar2(20));

    这条语句,在指定列的长度为20后,并未指定长度的类型,那它的类型会是什么呢,这个就是由NLS_LENGTH_SEMANTICS参数的值所决定了,该参数值可以在会话级设定。

    1. 查看数据库NLS_LENGTH_SEMANTICS参数的值(这个值只有2个值可选,byte,char,默认是byte)

    select * from nls_database_parameters t where t.parameter='NLS_LENGTH_SEMANTICS';

    2. 查看NLS_CHARACTERSET 的值

    select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET';

    数据库的NLS_CHARACTERSET 为AL32UTF8,即一个汉字占用三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,则一个字符占用两个字节(1char=2byte)。

  • 相关阅读:
    k8s默认调度器常见调度算法解析
    K8s集群相关证书
    flannel overlay网络浅析
    Pod挂载LocalStoragePv过程理解
    k8s开发实践
    Flex布局【弹性布局】学习
    python中的技巧——杂记
    Tarjan + bfs HYSBZ 1179Atm
    POJ1988 Cube stacking(非递归)
    将博客搬至CSDN
  • 原文地址:https://www.cnblogs.com/warehouse/p/6947133.html
Copyright © 2011-2022 走看看