`

ORACLE VARCHAR2(n CHAR)格式

 
阅读更多

转自:http://blog.sina.com.cn/s/blog_69e55cc20100svty.html

 

以前就遇到过这个问题,当时查了就忘了,今天详细记录一下。

 
数据从SOURCE表导到TARGET表因为超长进不去。SOURCE这边格式是VARCHAR2(255 CHAR), TARGET那边格式是VARCHAR2(256),这两个格式的区别在于:
 
http://www.oracle-base.com/articles/9i/CharacterSemanticsAndGlobalization9i.php
 
数据库存储字符数字的字段使用BYTE存储,对单字节字符集这种方法很适用,有几个字符就有几个BYTE。但如果要插入多字节字符集的国际字符,BYTE和字符数不相等,BYTE数就会超长,导致数据进不去。于是ORACLE 9i设置了三种格式来解决问题:
 
1. VARCHAR2(n)
2. VARCHAR2(n BYTE)
3. VARCHAR2(n CHAR)
 
选项1 使用NLS_LENGTH_SEMANTICS参数中设定的默认长度,默认值为BYTE
选项2 只允许最大n BYTE长度的字符存储,和字符数无关
选项3 允许最大n 个字符的存储,与BYTE无关
 
无论何种格式,INSTR, LENGTH, SUBSTR函数仍以字符数来计算。用BYTE计算的话,请使用INSTRB, LENGTHB, SUBSTRB函数。
分享到:
评论

相关推荐

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

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

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

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

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

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

    浅析Oracle中char和varchar2的区别

    本文主要探讨的是两种常见字符串类型:`CHAR`和`VARCHAR2`,它们在使用上有何不同,并且会涉及一些相关的Oracle数据库功能。 首先,`CHAR`是定长字符串类型,这意味着当你声明一个`CHAR(10)`字段时,无论你存储的...

    char,varchar以及varchar2的区别

    例如,`varchar2`的最大长度通常小于`varchar`,并且Oracle对`varchar2`的数据进行了更严格的校验,这有助于减少因数据格式错误引发的问题。此外,Oracle建议优先使用`varchar2`,因为它在内部处理上更为高效。 **...

    解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    另一种方法是将char类型字段改为varchar2类型。在大多数情况下,varchar2类型是更好的选择,因为它可以存储变长字符串,而char类型只能存储固定长度的字符串。 在使用jdbc查询时,也需要注意char类型字段的特殊性。...

    Oracle基本数据类型存储格式浅析

    在Oracle中,主要的字符类型包括CHAR、VARCHAR2和LONG。CHAR是定长字符类型,无论实际输入的数据多寡,都会在存储时填充空格至预设长度。例如,如果定义一个CHAR(10)的列,即使只插入了三个字符'abc',数据库仍会将...

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

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

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

    Oracle 中的 VARCHAR2(n) 类型可以对应 DB2 的 CHAR(n) 和 VARCHAR(n) 类型。其中,n 代表字符的长度。对于 VARCHAR2(n) 类型,如果 n ,则使用 DB2 的 CHAR 类型或 VARCHAR 类型;如果 n > 32766,则使用 DB2 的 ...

    Oracle与DB2数据类型的对应说明书

    Oracle中的VARCHAR2类型可以对应DB2/400中的CHAR类型和VARCHAR类型。当n时,可以使用DB2/400中的CHAR类型或VARCHAR类型。当n>4000时,可以使用DB2/400中的VARCHARLONG类型或CLOB类型。 三、NUMBER类型 Oracle中的...

    Oracle接收长度大于4000的字符串

    在Oracle数据库中,默认情况下,`VARCHAR2`类型字段的最大长度为4000个字符。当需要处理更长的字符串时(例如,超过4000个字符),可以采用多种方法来解决这一问题。本文将详细介绍如何在.NET环境中处理和传递长度...

    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; ``` 这将字符串形式的日期和时间转换为 ...

    oracle和db2的区别

    - 提供了`CHAR`, `VARCHAR`, `INT`, `DATE`, `TIME`等多种转换函数。 - 例如,`SELECT VARCHAR(CURRENT_TIMESTAMP) FROM SYSIBM.SYS_DUMMY1;` #### 5. 快速清空大表 - **Oracle**: - 使用`TRUNCATE TABLE ...

    DB2和ORACLE 应用开发差异比较

    - Oracle的`CHAR(n)`和`VARCHAR2(n)`对应DB2的`CHAR(n)`和`VARCHAR(n)`,但DB2的`VARCHAR(n)`最大长度为32762,Oracle为2000。 - Oracle的`LONG`类型在DB2中可以用`LONG VARCHAR(n)`或`CLOB(2GB)`替代。 - `...

    oracle基本数据类型存储格式浅析.pdf

    本文将详细探讨Oracle数据库中几种基本字符类型的存储格式,包括`CHAR`、`VARCHAR2`以及`LONG`。 #### CHAR类型 `CHAR`是一种固定长度的字符类型。当用户指定了一个`CHAR`类型的列,并指定了一个长度(例如`CHAR...

    oracle与db2对比

    - DB2 提供 `CHAR()`, `VARCHAR()`, `INT()`, `DATE()`, `TIME()` 等函数,例如 `SELECT VARCHAR(CURRENT TIMESTAMP) FROM SYSIBM.SYSDUMMY1;` - DB2 V8 开始支持 `TO_CHAR` 和 `TO_DATE` 5. 快速清空大表: - ...

    Oracle和DB2的数据类型比较

    对于Oracle中的VARCHAR2类型,可以根据实际需求选择与DB2/400中的CHAR或VARCHAR类型对应。特别是当VARCHAR2类型的长度小于等于32766时,建议使用DB2/400中的CHAR类型以提高效率并节省存储空间。 #### 五、大对象...

    Oracle 数据类型

    Oracle的数据类型: 1、CHAR数据类型,该类型是固定长度的字符串,如果没指定大小,则默认占用一字节,如果输入的值小于... 8、ORACLE其实也支持INTEGER,FLOAT,DOUBLE,VARCHAR,最好用ORACLE自身的NUMBER 和 VARCHAR2

Global site tag (gtag.js) - Google Analytics