`

转:oracle varchar(20) 与 varcahr2(20 byte)

 
阅读更多

 

  开发环境中:有的表中字段类型定义为varchar2(20)有的表中字段类型定义为varchar2(20 byte)

 

varchar2(20)和varchar2(20 byte)是否相同呢?

 

相不相同是由数据库的参数NLS_LENGTH_SEMANTICS决定的,有两个单位,char(字符)或者字节(byte),该参数默认值为BYTE。

 

所以说,在默认情况下 varchar2(20) = varchar2(20 byte)。如果参数值为CHAR 就不相等。

 

建议:使用统一的格式如:varchar2(20)

 

演示:

 

SQL> show parameter nls_length_semantics;

 

 

 

NAME                                        TYPE       VALUE

 

------------------------------------ ----------- ------------------------------

 

nls_length_semantics                    string     BYTE

 

SQL> create table tab1 (

 

  2  id   number(10),

 

  3  description varchar2(20)

 

  4  );

 

 

 

Table created.

 

 

 

SQL> create table tab2 (

 

  2  id   number(10),

 

  3  description varchar2(20 char)

 

  4  );

 

 

 

Table created.

 

 

 

SQL> desc tab1;

 

 Name                                             Null?    Type

 

 ----------------------------------------- -------- ----------------------------

 

 ID                                                     NUMBER(10)

 

 DESCRIPTION                                                  VARCHAR2(20)

 

 

 

SQL> desc tab2;

 

 Name                                             Null?    Type

 

 ----------------------------------------- -------- ----------------------------

 

 ID                                                     NUMBER(10)

 

 DESCRIPTION                                                  VARCHAR2(20 CHAR)

 

SQL> alter session set nls_length_semantics=char;

 

 

 

Session altered.

 

 

 

SQL> create table tab3 (

 

  2  id number(10),

 

  3  description varchar2(20)

 

  4  );

 

 

 

Table created.

 

 

 

SQL> desc tab1;

 

 Name                                             Null?    Type

 

 ----------------------------------------- -------- ----------------------------

 

 ID                                                     NUMBER(10)

 

 DESCRIPTION                                                  VARCHAR2(20 BYTE)

 

 

 

SQL> desc tab2;

 

 Name                                             Null?    Type

 

 ----------------------------------------- -------- ----------------------------

 

 ID                                                     NUMBER(10)

 

 DESCRIPTION                                                  VARCHAR2(20)

 

 

 

SQL> desc tab3;

 

 Name                                             Null?    Type

 

 ----------------------------------------- -------- ----------------------------

 

 ID                                                     NUMBER(10)

 

 DESCRIPTION                                                  VARCHAR2(20)

 

注意:对于SYS和SYSTEM而言不受该NLS_LENGTH_SEMANTICS影响,始终为BYTE

请不要随意修改SYSTEM级别的NLS_LENGTH_SEMANTICS,否则一些成品套件例如EBS将可能无法正常运行。

 

 

 

 

分享到:
评论

相关推荐

    oracle中varchar2(byte)和varchar2(char).doc

    ### Oracle中的VARCHAR2(BYTE)与VARCHAR2(CHAR)区别详解 #### 一、引言 在Oracle数据库中,`VARCHAR2`是最常用的字符数据类型之一,用于存储变长的字符串。然而,在定义`VARCHAR2`类型时,可以选择指定长度为`BYTE`...

    oracle char,varchar,varchar2的区别和使用方法

    ### Oracle CHAR, VARCHAR, VARCHAR2 的区别与使用方法 在 Oracle 数据库中,字符串类型是极为常见的数据类型之一,主要用于存储文本数据。其中最常用的三种类型包括:`CHAR`, `VARCHAR`, 和 `VARCHAR2`。这三种...

    varchar 和varchar2之间的联系和区别

    在Oracle数据库中,`VARCHAR`与`VARCHAR2`是两种常见的用于存储可变长度字符串的数据类型。尽管它们在名称上相似,但在实际应用中却存在一定的差异。本文将详细介绍这两种数据类型的特性及其应用场景,帮助读者更好...

    浅析Oracle中char和varchar2的区别 电脑资料.docx

    Oracle 中 char 和 varchar2 的区别 Oracle 中 char 和 varchar2 是两种常用的字符串数据类型,它们之间的区别是很多开发者经常忽视的。下面我们将详细分析 Oracle 中 char 和 varchar2 的区别。 首先,char 是定...

    oracle中varchar与date的转换,number与varchar的转换.pdf

    2. varchar 转 date 使用 to_date 函数可以将 varchar 类型转换为 date 类型。例如: ```sql select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; ``` 这将字符串形式的日期和时间转换为 ...

    Mysql转oracle工具

    例如,MySQL的`VARCHAR2`对应Oracle的`VARCHAR2`,但MySQL的`TINYINT`在Oracle中可能是`NUMBER(3)`,`BLOB`和`CLOB`在两个系统中都有,但处理方式不同。 3. **对象权限和安全模型**: MySQL的权限管理相对简单,而...

    函数进行BLOB转换Varchar2.txt

    Oracle SQL 函数进行BLOB转换Varchar2

    oracle四大宝典之1:Oracle Sql基础

    Oracle支持多种数据类型,如`NUMBER`(包含整数和小数)、`VARCHAR2`(可变长度字符串)、`CHAR`(固定长度字符串)、`DATE`(日期和时间)、`BLOB`(大对象,如图片或文档)、`CLOB`(字符大对象)等。理解这些...

    Mysql的表对象Sql语句转换单表,转换成Oracle创建表sql

    - 数据类型:例如,MySQL的`VARCHAR2`在Oracle中是`VARCHAR2`,但MySQL的`TINYINT`对应Oracle的`NUMBER(3)`。 - 约束定义:Oracle使用`CONSTRAINT`关键字定义约束,而MySQL可以直接在列定义中指定。 - 表空间:...

    DB2和ORACLE_应用开发差异比较

    - **字符类型**:Oracle的`CHAR`和`VARCHAR2`与DB2的`CHAR`和`VARCHAR`类似,但长度限制不同。 - **数值类型**:Oracle的`NUMBER`类型根据精度和小数位数的不同,可以映射到DB2的`SMALLINT`、`INTEGER`、`BIGINT`、`...

    OCP/OCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)

    - **字符类型**:如VARCHAR2、CHAR和CLOB。 - **日期/时间类型**:如DATE和TIMESTAMP。 4. **索引和约束** - **索引类型**:包括B-tree、位图和反向键索引。 - **约束类型**:如PRIMARY KEY、FOREIGN KEY、...

    char,varchar以及varchar2的区别

    `varchar2`是Oracle数据库独有的字符串类型,与`varchar`类似,也是可变长度的。然而,`varchar2`在Oracle中有一些额外的限制和优化。例如,`varchar2`的最大长度通常小于`varchar`,并且Oracle对`varchar2`的数据...

    TiDB&MySql&Oracle介绍及区别

    5. MySQL 与 ORACLE 区别 - 功能上:Oracle 提供更多高级特性,如更复杂的数据类型、分区表等。 - 性能上:Oracle 在大型企业级应用中通常表现出更高的性能。 - 价格上:Oracle 通常比 MySQL 成本更高,尤其在...

    Oracle与DB2数据类型分类对应说明

    例如,在 DB2/400 中,我们可以使用定长的 CHAR(N)类型与 Oracle 的 VARCHAR2(n)相对应,这样可以提高效率和节省存储空间。 四、LOB 类型 DB2/400 提供 VARCHAR 和 CLOB 与 Oracle 中的 RAW 和 LONG RAW 相...

    ORACLE与DB2的区别和转换

    ### ORACLE与DB2的区别和转换 #### 一、简介 在数据库领域,Oracle和DB2都是非常流行的数据库管理系统。它们各自具有独特的特性和优势,并且广泛应用于不同的业务场景中。对于那些需要在Oracle和DB2之间进行数据...

    ORACLE和SQL语法区别归纳

    - **字符数据类型**:Oracle 使用 `CHAR` 和 `VARCHAR2`,其中 `VARCHAR2` 是变长字符类型,最大长度为 4KB;而 SQL Server 使用 `CHAR` 和 `VARCHAR`,`VARCHAR` 的最大长度为 8KB。 - **变长字符类型**:Oracle ...

    mysql数据库转换成oracle

    但要注意,Oracle可能需要不同的数据类型映射,例如,MySQL的VARCHAR2可能需要转换为Oracle的VARCHAR2。 5. **使用转换工具**:为了简化上述过程,存在专门的工具,如压缩包中的`mysq2oracn.exe`。这种工具可以自动...

    OCP:Oracle9i DBA基础Ⅱ学习指南

    - 数据类型:熟悉Oracle9i支持的各种数据类型,如CHAR、VARCHAR2、NUMBER、DATE等。 - 表的创建与管理:掌握CREATE TABLE语句,包括约束(如NOT NULL、UNIQUE、FOREIGN KEY、PRIMARY KEY)的使用。 2. **性能优化...

    oracle与db2对比

    Oracle 和 DB2 是两种广泛应用的关系型数据库管理系统,它们在语法和功能上存在一些差异。以下是对两者主要区别的详细分析: 1. 取前 N 条记录: - Oracle 使用 `SELECT * FROM TableName WHERE ROWNUM ;` - DB2 ...

Global site tag (gtag.js) - Google Analytics