Number类型
在Oracle中NUMBER数据类型用于存储数值类数据。其语法如下:
NUMBER[(precision[,scale])]
precision表示精度,即这个数字有多少位,范围是1-38。
scale表示小数的位数也叫做尺度,范围是-84至127。
- 当尺度为负数则表示该数的最小单位是10-scale。
如果在
NUMBER(p,s)列中插入数字,并且数字超过精度p,则Oracle将发出错误。 但是,如果数量超过尺度s,则Oracle将对该值进行四舍五入。Oracle包含许多可用于定义数字列的别名,如下表所示:
ANSI数据类型 Oracle NUMBER数据类型 INT NUMBER(38) SMALLINT NUMBER(38) NUMBER(p,s) NUMBER(p,s) DECIMAL(p,s) NUMBER(p,s) ANSI所规定的数据类型在Oracle中都不是真正的数据类型,只是Oracle在内部映射的别名。
FLOAT数据类型
在Oracle中FLOAT数据类型是NUMBER的子类型, 其主要目的是促进与ANSI SQL FLOAT数据类型的兼容。
FLOAT(p)
FLOAT只能指定数据的精度。因为Oracle会从数据中去解析尺度。并且FLOAT指定的精度是二进制的,所以最大值为126,在number中的精度是10进制的。
CHAR数据类型
Oracle CHAR数据类型用于存储**固定长度**的字符串。 CHAR数据类型可以存储1到2000字节的字符串。
要定义一个CHAR列,需要用字节或字符来指定一个字符串长度,如下所示:
CHAR(length BYTE)
CHAR(length CHAR)
固定长度意味着如果一个数据小于CHAR列所定义的长度的话,Oracle将用空格补全不足的长度。
NCHAR数据类型
NCHAR用于存储固定长度的Unicode字符数据。NCHAR的字符集只能是AL16UTF16或UTF8,在数据库创建时指定为国家字符集。定义NCHAR时只能指定字符长度不能指定字节长度。
VARCHAR2和NVARCHAR2数据类型
和CHAR相比VARCHAR2不会在尾部填充空格补全不足长度,更省空间。
DATE数据类型
DATE数据类型允许以一秒的精度存储包括日期和时间的时间点值。DATE数据类型存储年份(包括世纪),月份,日期,小时数,分钟数和秒数。 它的范围从公元前4712年1月1日到公元9999年12月31日。输入和输出的标准日期格式是DD-MON-YY。
TO_CHAR()函数采用DATE值作为参数,根据指定的格式对其进行格式化,并返回一个日期字符串。例如,要以特定的格式显示当前的系统日期,请按如下所示使用
TO_CHAR()函数:SELECT TO_CHAR( SYSDATE, 'MM/DD/YYYY' ) FROM dual;由于Oracle使用内部格式来存储
DATE数据,因此在将日期值存储到日期列之前,通常必须将字符串转换为日期值。
要转换不是标准格式的日期值,可以使用带有格式字符串的TO_DATE()函数。以下示例使用
TO_DATE()函数将字符串“August 01,2017”转换为相应的日期:-- alter session set nls_language='SIMPLIFIED CHINESE'; SELECT TO_DATE('2018-10-21', 'YYYY-MM-DD' ) FROM dual;
TIMESTAMP数据类型
TIMESTAMP数据类型用于存储日期和时间数据,包括年,月,日,时,分和秒。
另外,它存储小数秒,它不是由DATE数据类型存储的。
要定义TIMESTAMP列,请使用以下语法:
column_name TIMESTAMP[(fractional_seconds_precision)]
INTERVAL数据类型
Oracle提供了两种日期时间数据类型:DATE和TIMESTAMP用于存储时间点数据。另外,它提供INTERVAL数据类型用于存储一段时间。
有两种类型的INTERVAL:
- INTERVAL YEAR TO MONTH - 间隔使用年份和月份。
- INTERVAL DAY TO SECOND - 使用包括小数秒在内的天,小时,分钟和秒存储间隔
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

