-- Start
NUMBER
CREATE TABLE TEST
(
-- 语法:NUMBER [ (p [, s]) ]
-- p(precision) 表示精度,精度是指从左边第一个非0数字开始到右边最后一个非0数字结束的所有数字的个数
-- p 可以是 1 到 38 的任意数字
-- s(scale) 表示标度,标度是指小数位的个数,s 可以是 -84 到 127 的任意数字
-- 如果一个数字超过了定义的精度,Oracle 会报错
-- 如果一个数字超过了定义的标度,Oracle 会自动四舍五入
COL1 NUMBER(7,2),
-- 你可能已经注意到了,标度怎么可能是负值呢?
-- 下面的列存储的是以万为单位的数字,万以下的数字将会被四舍五入,如 15000 --> 20000
COL2 NUMBER(10,-4),
-- 你可能也已经注意到了,标度怎么可能大于精度呢?那么请你再次看看精度的定义。
-- 下面的列用来存储诸如 0.01234 等小数点后的第一个数字是0的数字
COL3 NUMBER(4,5),
-- 下面的列定义了一个整数
COL4 NUMBER(4),
-- 下面的列同样定义了一个整数
COL5 NUMBER(4, 0),
-- 如果一个列没有指定精度和标度,表示最大精度和标度
COL6 NUMBER
);
-- 大多数国家都是用.作为整数与小数的分隔符
-- 但是也有些奇葩国家如德国用,作为整数与小数的分隔符
-- Oracle 允许我们修改 NLS_NUMERIC_CHARACTERS 来设置自己的分隔符
-- SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER='NLS_NUMERIC_CHARACTERS'
INSERT INTO TEST VALUES (0.1, 15000, .0388, 5, 8, 88e3);
INSERT INTO TEST VALUES (+.1, +15000, +0.0388, +5, +8, +88E+3);
INSERT INTO TEST VALUES (-0.1, -15000, -.0388, -5, -8, -88e-3);
FLOAT
CREATE TABLE TEST
(
-- 语法:FLOAT [(p)]
-- FLOAT 是 NUMBER 的一个子类型
-- FLOAT 非常诡异,没有充足的理由,千万不要使用它
-- Oracle 也不推荐我们使用 FLOAT,推荐使用 BINARY_FLOAT 和 BINARY_DOUBLE
COL1 FLOAT(7)
);
BINARY_FLOAT
CREATE TABLE TEST
(
-- BINARY_FLOAT 支持特殊值 BINARY_FLOAT_INFINITY 和 BINARY_FLOAT_NAN
COL1 BINARY_FLOAT
);
INSERT INTO TEST VALUES (BINARY_FLOAT_INFINITY);
INSERT INTO TEST VALUES (BINARY_FLOAT_NAN);
INSERT INTO TEST VALUES (0.1f);
INSERT INTO TEST VALUES (.2F);
INSERT INTO TEST VALUES (+0.3f);
INSERT INTO TEST VALUES (-.4F);
INSERT INTO TEST VALUES (5e6f);
INSERT INTO TEST VALUES (-6e+7f);
INSERT INTO TEST VALUES (+7E-8F);
BINARY_DOUBLE
CREATE TABLE TEST
(
-- BINARY_DOUBLE 支持特殊值 BINARY_DOUBLE_INFINITY 和 BINARY_DOUBLE_NAN
COL1 BINARY_DOUBLE
);
INSERT INTO TEST VALUES (BINARY_DOUBLE_INFINITY);
INSERT INTO TEST VALUES (BINARY_DOUBLE_NAN);
INSERT INTO TEST VALUES (0.1d);
INSERT INTO TEST VALUES (.2D);
INSERT INTO TEST VALUES (+0.3d);
INSERT INTO TEST VALUES (-.4D);
INSERT INTO TEST VALUES (5e6d);
INSERT INTO TEST VALUES (-6e+7d);
INSERT INTO TEST VALUES (+7e-8D);
-- 更多参见:Oracle SQL 精萃
-- 声明:转载请注明出处
-- Last edited on 2015-07-04
-- Created by ShangBo on 2014-12-13
-- End