number类型的语法很简单,就是:
number(p,s)
p,s都是可选的,假如都不填,p默认为38,s默认为-48~127。
1. 精度(precision),或总位数。默认情况下,精度为38位,取值范围是1~38之间。也可以用字符*表示38。
2. 小数位置(scale),或小数点右边的位数。小数位数的合法值为-48~127,其默认值取决于是否指定了精度。如果没有知道精度,小数位数则默认有最大的取值区间。如果指定了精度,小数位数默认为0(小数点右边一位都没有)。例如,定义为NUMBER的列会存储浮点数(有小数),而NUMBER(38)只存储整数数据(没有小数),因为在第二种情况下小数位数默认为0.
如下SQL语句:
create table t ( msg varchar2(12.), num_col number(5,2) );
insert into t (msg,num_col) values ( '123.456', 123.456 );//执行成功,保存的是123.46
insert into t (msg,num_col) values ( '1234', 1234 );//执行失败,要保留2位小数,那么整数位最多3位,现在是4位。
如果scale是负数怎么样,表示左边整数位舍入几位:
create table t ( msg varchar2(12.), num_col number(5,-2) );
insert into t (msg,num_col) values ( '123.45', 123.45 );//执行成功,保存的是100
insert into t (msg,num_col) values ( '123.456', 123.456 );//执行成功,保存的是100
其他数据类型:
1. NUMERIC(p,s):完全映射至NUMBER(p,s)。如果p未指定,则默认为38.
2. DECIMAL(p,s)或DEC(p,s):完全映射至NUMBER(p,s)。如果p为指定,则默认为38.
3. INTEGER或INT:完全映射至NUMBER(38)类型。
4. SMALLINT:完全映射至NUMBER(38)类型。
5. FLOAT(b):映射至NUMBER类型。
6. DOUBLE PRECISION:映射至NUMBER类型。
7. REAL:映射至NUMBER类型。
性能考虑:
一般而言,Oracle NUMBER类型对大多数应用来讲都是最佳的选择。不过,这个类型会带来一些性能影响。Oracle NUMBER类型是一种软件数据类型,在Oracle软件本身中实现。我们不能使用固有硬件操作将两个NUMBER类型相加,这要在软件中模拟。不过,浮点数没有这种实现。将两个浮点数相加时,Oracle会使用硬件来执行运算。
换而言之,将一些列的number列相加,没有将一系列float列相加来得快。因为float列的精度低很多,一般是6~12位。
比如:select sum(ln(cast( num_type as binary_double ) )) from t
比:select sum(ln(cast( num_type) )) from t 要快很多。
分享到:
相关推荐
`ROW_NUMBER()`函数是Oracle数据库中一个非常强大的工具,特别是在需要对数据进行分组和排序时。通过掌握其基本用法以及与其他窗口函数的结合使用,可以在数据处理和分析方面发挥重要作用。无论是简单的排序还是复杂...
在Oracle数据库系统中,表类型和表变量是高级PL/SQL编程的重要组成部分,它们提供了在存储过程、函数和触发器中处理数据集的有效方式。本文将深入探讨Oracle表类型表变量的使用,以及如何通过提供的SQL脚本进行实践...
2. **数据类型**:高亮显示如`NUMBER`, `VARCHAR2`, `DATE`, `BOOLEAN`等Oracle 9i中的数据类型。 3. **函数和过程**:识别并突出`SYSDATE`, `TO_CHAR`, `DBMS_OUTPUT.PUT_LINE`等内置函数和PL/SQL过程。 4. **SQL...
在Oracle中,除了常见的单值数据类型(如 NUMBER、VARCHAR2等)外,还支持复合数据类型,这些类型可以存储更复杂的数据结构。主要有以下几种: - VARRAY(可变数组):VARRAY允许我们创建固定大小的数组,每个元素...
本文将对 Oracle 中 Using 用法进行详细的介绍,并提供实际开发的示例和技巧。 一、静态 SQL 和动态 SQL 在 Oracle 中,SQL 语句可以分为两种类型:静态 SQL 和动态 SQL。静态 SQL 在编译期就已经确定,例如 ...
下面我们将详细介绍 TRUNC 函数的用法和特点。 一、日期 TRUNC 函数 TRUNC 函数可以截断日期类型的数据,返回截断后的日期值。其语法格式如下: ``` TRUNC(date[,fmt]) ``` 其中,date 是一个日期值,fmt 是日期...
Oracle 函数用法 Oracle 函数是Oracle数据库中的一种编程对象,它允许用户定义自己的函数,以便在SQL语句中调用。 Oracle 函数的用法可以分为以下几个方面: 函数调用限制 在 Oracle 中,函数可以在 SQL 语句中被...
这一功能自Oracle 8i版本的DBMS_SQL包引入以来,极大地增强了PL/SQL的灵活性和动态性。通过`EXECUTE IMMEDIATE`,开发者可以在不知道确切SQL语句的情况下动态构建并执行SQL查询、数据操纵语言(DML)和数据定义语言...
Oracle 中有多种字段类型,包括 CHAR、VARCHAR2、NUMBER、DATE 等。不同的字段类型有不同的特点和使用场景。 4. 约束条件 约束条件用于限制字段的取值范围和格式。常用的约束条件包括 PRIMARY KEY、UNIQUE、CHECK ...
在Oracle中,分析函数的语法结构为: ``` analytic_function([arguments]) OVER ([partition_clause] [order_by_clause] [windowing_clause]) ``` 1. `analytic_function`:这是实际的分析函数,例如AVG, COUNT, ...
根据提供的文档信息,我们可以详细解析Oracle存储过程的相关知识点,包括其基本结构、语法以及示例中的具体用法。 ### Oracle存储过程概述 Oracle存储过程是一种在数据库中预先编译好的SQL与PL/SQL代码的集合,它...
- CLEARANCE_HIRAW、CLEARANCE_LORAW:任务可信任的Oracle最大和最小间隙。 - NLS_ENV:任务运行的NLS会话设置。 - MISC_ENV:任务运行的其他一些会话参数。 设置Job时,需要指定何时执行任务,即INTERVAL参数。它...
Oracle 支持多种数据类型,包括数值类型(如 NUMBER)、字符串类型(如 VARCHAR2、CHAR)、日期时间类型(如 DATE)、二进制类型(如 BLOB)等。理解这些数据类型及其用途是编写有效SQL语句的基础。 2. **表的创建...
Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写一系列SQL和PL/SQL语句,形成可重复使用的代码块,...理解并熟练掌握这些基本语法和用法,能够帮助开发者更好地管理和维护数据库中的复杂业务逻辑。
### Oracle 分组排序统计高级用法详解 #### 一、Oracle分组排序和统计概述 在Oracle数据库中,实现分组排序和统计是一项常见的需求,主要用于处理大量的数据,并从中提取有价值的信息。通过合理运用SQL语句,特别...
### Oracle存储过程、函数语法详解 #### 一、概述 Oracle数据库系统因其高效的数据处理能力,在企业级应用中被广泛采用。存储过程和函数作为Oracle数据库的重要组成部分,可以帮助开发人员编写更加灵活、高效的...
### Oracle 临时表用法详解 #### 一、背景与问题描述 在处理数据库操作时,经常遇到因数据量庞大而导致处理效率降低的问题。例如,某个报表中心的存储过程执行速度过慢,其中一个原因是该过程涉及到一个中间表,...
#### 二、Oracle分页的基本语法 假设我们需要从一个名为`EMPLOYEE`的表中查询数据,并实现每页显示10条记录。下面是使用`OFFSET`与`FETCH FIRST`进行分页查询的基本语法示例: ```sql SELECT * FROM ( SELECT ...
通过本文的学习,我们不仅了解了 `to_date()` 函数的基本用法和参数格式,还深入探讨了日期格式掩码的意义及各种日期操作技巧。这对于日常开发工作中处理日期相关的问题有着重要的意义。此外,通过实际案例的演示,...