oracle 常用数据类型
2011-11-13 16:48
302 查看
1. String Type:
CHAR( <SIZE> <BYTE|CHAR> ): 定长; 字符编码使用default NLS setting; 最多2000bytes
NCHAR( <SIZE> ):定长; 字符编码使用database's national character set;最多2000bytes
VARCHAR2( <SIZE> <BYTE|CHAR> ):变长;字符编码使用default NLS setting;最多4000bytes
NVARCHAR2( <SIZE> ):变长;字符编码使用database's national character set;最多4000bytes
长度:
定长:如果字符没有达到指定的长度,则在后面添加space填满。这会导致很多麻烦,比如判断两个字符串是否相等;而且也可能浪费空间。因此:不要使用定长的!
CHAR和VARCHAR2中:BYTE和CHAR的区别
BYTE指定空间的字节数,CHAR指明字符个数 (注意如在UTF-8zhong,有些字符可以占多个字节)。一般要使用CHAR而不是BYTE。
one very common issue people encounter when using multibyte character sets, namely that a VARCHAR2(N)
doesn’t necessarily hold N characters, but rather N bytes.
[align=left]
[/align]
[align=left]NCHAR和NVARCHAR2:[/align]
[align=left]长度只使用字符个数。[/align]
字符编码:
[align=left]NLS(National Language Support): [/align]
[align=left]在oracle中可以设置。[/align]
[align=left]
[/align]
[align=left]database's national character set:(Unicode)[/align]
[align=left]In Oracle9i and above, the database’s national character set may take one of two values: UTF8 or [/align]
[align=left]AL16UTF16 (UTF-16 in 9i; AL16UTF16 in 10g). This makes the NCHAR and NVARCHAR types suitable for storing[/align]
[align=left]only multibyte data, which[/align]
小心字符编码间的转换!有可能会丢失信息。
2. Binary Data:
[align=left]RAW( <size> ):变长。长度单位是byte。最大为2000bytes。[/align]
[align=left]
[/align]
[align=left]字符和Raw间的转换函数:[/align]
• HEXTORAW:
To convert strings of hexadecimal characters to the RAW type
• RAWTOHEX:
To convert RAW strings to hexadecimal strings
[align=left]
[/align]
[align=left]3. Number:[/align]
[align=left]NUMBER( p, s ):[/align]
[align=left]p: Precision, or the total number of digits [/align]
[align=left]s: Scale, or the number of digits to the right of the decimal point[/align]
范围: 1 <= p <=38, -84 <= s <= 127
保存数据范围:-1.0e-130 <= number value < 1.0e+126
保存在机器内部的范围: 1 ~ 22 bytes
[align=left]
[/align]
[align=left]s >0时:精确到小数点后面s位。然后检查:小数点前面的有效位(从左边非0位开始数)+ s <= p[/align]
s == 0 时:表示整数。检查有效位 <= p
[align=left]s < 0时:精确到小数点前面s位。检查:有效位 + s <= p (即左边因为s产生的0不算在p之类)[/align]
[align=left][/align]
[align=left]BINARY_FLOAT: 空间占32bit 6-7位有效数字 -3.4E-38 到 3.4E38 [/align]
[align=left]BINARY_DOUBLE: 空间占64bit 15~16位有效数字 -1.7E-308 到 1.7E308[/align]
[align=left]对应IEEE中单精度和双精度浮点数。Oracle10g才加入。[/align]
[align=left]
[/align]
[align=left]对比:[/align]
精度:Number比这float和double的精度都高多了,Number是38位。在对精度要求很高的应用中(如financial
application),千万不用使用这两个,而是使用Number类型。
[align=left]数的表示范围:Number比float大,比double小。[/align]
[align=left]速度:Float和Double有硬件直接支持,而Number需要用软件实现,因此Number速度慢很多。(可以用Number来存储数据,然后运算时先用CAST函数转换成float或double)[/align]
[align=left]
[/align]
[align=left]4. 日期:[/align]
[align=left]DATE: [/align]
The DATE type is a fixed-width 7-byte date/time
datatype. It will always contain the seven attributes of
[align=left]the century, the year within the century, the month, the day of the month, the hour, the minute, and the[/align]
[align=left]second.[/align]
[align=left]
[/align]
[align=left]TIMESTAMP(n):支持fractional second[/align]
[align=left]fixed-width 7- or 11-byte date/time datatype[/align]
[align=left]n可选,n可取0~9,表示秒后面的小数点位数[/align]
[align=left]
[/align]
CHAR( <SIZE> <BYTE|CHAR> ): 定长; 字符编码使用default NLS setting; 最多2000bytes
NCHAR( <SIZE> ):定长; 字符编码使用database's national character set;最多2000bytes
VARCHAR2( <SIZE> <BYTE|CHAR> ):变长;字符编码使用default NLS setting;最多4000bytes
NVARCHAR2( <SIZE> ):变长;字符编码使用database's national character set;最多4000bytes
长度:
定长:如果字符没有达到指定的长度,则在后面添加space填满。这会导致很多麻烦,比如判断两个字符串是否相等;而且也可能浪费空间。因此:不要使用定长的!
CHAR和VARCHAR2中:BYTE和CHAR的区别
BYTE指定空间的字节数,CHAR指明字符个数 (注意如在UTF-8zhong,有些字符可以占多个字节)。一般要使用CHAR而不是BYTE。
one very common issue people encounter when using multibyte character sets, namely that a VARCHAR2(N)
doesn’t necessarily hold N characters, but rather N bytes.
[align=left]
[/align]
[align=left]NCHAR和NVARCHAR2:[/align]
[align=left]长度只使用字符个数。[/align]
字符编码:
[align=left]NLS(National Language Support): [/align]
[align=left]在oracle中可以设置。[/align]
[align=left]
[/align]
[align=left]database's national character set:(Unicode)[/align]
[align=left]In Oracle9i and above, the database’s national character set may take one of two values: UTF8 or [/align]
[align=left]AL16UTF16 (UTF-16 in 9i; AL16UTF16 in 10g). This makes the NCHAR and NVARCHAR types suitable for storing[/align]
[align=left]only multibyte data, which[/align]
小心字符编码间的转换!有可能会丢失信息。
2. Binary Data:
[align=left]RAW( <size> ):变长。长度单位是byte。最大为2000bytes。[/align]
[align=left]
[/align]
[align=left]字符和Raw间的转换函数:[/align]
• HEXTORAW:
To convert strings of hexadecimal characters to the RAW type
• RAWTOHEX:
To convert RAW strings to hexadecimal strings
[align=left]
[/align]
[align=left]3. Number:[/align]
[align=left]NUMBER( p, s ):[/align]
[align=left]p: Precision, or the total number of digits [/align]
[align=left]s: Scale, or the number of digits to the right of the decimal point[/align]
范围: 1 <= p <=38, -84 <= s <= 127
保存数据范围:-1.0e-130 <= number value < 1.0e+126
保存在机器内部的范围: 1 ~ 22 bytes
[align=left]
[/align]
[align=left]s >0时:精确到小数点后面s位。然后检查:小数点前面的有效位(从左边非0位开始数)+ s <= p[/align]
s == 0 时:表示整数。检查有效位 <= p
[align=left]s < 0时:精确到小数点前面s位。检查:有效位 + s <= p (即左边因为s产生的0不算在p之类)[/align]
[align=left][/align]
[align=left]BINARY_FLOAT: 空间占32bit 6-7位有效数字 -3.4E-38 到 3.4E38 [/align]
[align=left]BINARY_DOUBLE: 空间占64bit 15~16位有效数字 -1.7E-308 到 1.7E308[/align]
[align=left]对应IEEE中单精度和双精度浮点数。Oracle10g才加入。[/align]
[align=left]
[/align]
[align=left]对比:[/align]
精度:Number比这float和double的精度都高多了,Number是38位。在对精度要求很高的应用中(如financial
application),千万不用使用这两个,而是使用Number类型。
[align=left]数的表示范围:Number比float大,比double小。[/align]
[align=left]速度:Float和Double有硬件直接支持,而Number需要用软件实现,因此Number速度慢很多。(可以用Number来存储数据,然后运算时先用CAST函数转换成float或double)[/align]
[align=left]
[/align]
[align=left]4. 日期:[/align]
[align=left]DATE: [/align]
The DATE type is a fixed-width 7-byte date/time
datatype. It will always contain the seven attributes of
[align=left]the century, the year within the century, the month, the day of the month, the hour, the minute, and the[/align]
[align=left]second.[/align]
[align=left]
[/align]
[align=left]TIMESTAMP(n):支持fractional second[/align]
[align=left]fixed-width 7- or 11-byte date/time datatype[/align]
[align=left]n可选,n可取0~9,表示秒后面的小数点位数[/align]
[align=left]
[/align]
相关文章推荐
- Oracle常用数据类型简介
- oracle常用数据类型说明
- oracle常用数据类型
- oracle常用数据类型说明
- Oracle常用数据类型
- Oracle数据库常用的数据类型
- Oracle 建表常用数据类型详解
- 笔记081112 ORACLE 常用系统函数 数字类型 时间类型 大文件数据类型 主键约束 NOT NULL UNIQUE CHECK FOREIGN KEY ON DELETE CASCADE ON DELETE SET NULL USER_C
- ORACLE常用数据类型(转)
- oracle常用的复合数据类型 : BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_integer
- Oracle速查语法:数据类型,函数,异常类型,常用命令
- Oracle 常用数据类型
- mysql与oracle常用函数及数据类型对比00持续补充
- Oracle建表常用数据类型详解
- Oracle 常用数据类型
- Oracle 建表常用数据类型的详解
- ORACLE常用数据类型
- oracle中常用的数据类型
- Oracle的常用数据类型和几个小的知识点——《一周问题集》
- oracle常用数据类型