Oracle PL/SQL 程序设计读书笔记 第9章 数字

Oracle PL/SQL 程序设计读书笔记 - 第9章 数字

Oracle PL/SQL 程序设计读书笔记 - 第9章 数字

9.1 数值型数字类型

  • NUMBER:这是一个真正的十进制数据类型,也是PL/SQL中唯一一个用完全平台独立方式实现的数值类型。
  • PLSINTEGER和BINARYINTEGER:这两种整数类型是和你的底层硬件表示整理的方法完全一致的。
  • SIMPLEINTEGER:它和BINARYINTEGER有相同的取值范围,不过不允许为NULL,而且发生溢出时也不会抛出异常。
  • BINARYFLOAT和BINARYDOUBLE:这两种分别IEEE-754标准中的单精度,双精度二进制浮点类型。
  • SIMPLEFLOAT和SIMPLEDOUBLE:它们和BINARYFLOAT和BINARYDOUBLE有相同的聚会范围,不过不允许为NULL,而且发生溢出时也不会抛出异常,也不支持特殊的直接量或者谓词。

9.1.1 NUMBER类型

声明一个NUMBER变量最简单的办法是仅仅指明NUMBER关键字就可以了。

DECLARE x NUMBER;

这样的一个声明会产生一个浮点的NUMBER。Oracle数据库最多会分配能容纳40个数字的空单,小数点也会根据赋予变量的值作最优浮动。取值范围1.0E-130到1.0E126-1。比最小值还小的值会向下舍入为0,如果计算结果的值大于最大值将导致undefined,导致运行时错误但不会抛出异常。

NUMBER (precision, scale)

- percision是这个数值中总的有效数字的个数,范围1-38
- scale表明小数点右面(正刻度)或者左面(负刻度)的数字个数。范围-84-127

例如:

- NUMBER(9,2)->9999999.99
- NUMBER(9,11)->.00999999999
- NUMBER(9,-11)->99999999900000000000.

9.1.2 PLS_INTEGER类型

  • 聚会范围从-2147483648 到 2147483647的有符号整数。
  • 设计为这个数据类型是为了运算速度。

9.1.3 BINARY_INTEGER类型

9.1.4 SIMPLE_INTEGER类型

  • 和PLS_INTEGER有相同的取值范围。但是它不支持NULL值,也不会检查溢出条件。
  • 这个数据类型是PLS_INTEGER的性能增强版本。

9.1.5 BINARY_FLOAT和BINARY_DOUBLE类型

Oracle在对浮点类型开进隐式类型转换时有一个强制的优先级。优先级从最高到最低依次是:BINARYDOUBLE、BINARYFLOAT、NUMBER

9.1.5 SIMPLE_FLOAT和SIMPLE_DOUBLE类型

9.2 数字转换

9.2.1 TO_NUMBER函数

TO_NUMBER(string[,format [,nls_params]]

-string:是一个字符串或者包含数字表现形式的BINARY_DOUBLE表达式
- format:这是一个可选的格式掩码,用来指明如果第一个参数是个字符串的话,如何把这个字符形式的数值解释成数字
- nls_params:这是一个可选的字符串,用来指明若干NLS参数值。

9.2.2 TO_CHAR函数

是把一个数字转换成对应的字符表现形式。

TO_CHAR (number,[,format [,nls_params]])

- number:这是你想要用字符形式表示的数字。
- format:这是可选的格式掩码
- nls_params:这是一个可选的字符串,用来指明若干NLS参数值。

注意转换后的的字符形式显示一个正数前面可能会预留一个空格。

9.2.3 CAST函数

可以用来把数字转换成字符串或者相反

CAST(expression AS datatype)

CAST的缺点就是不支持数字格式样式的使用。而CAST的一个好处就是它是ISO SQL标准的一部分。

函数CAST看起来没有给PL/SQL的数字转换带来真正好处。但是,CAST可以用于写出百分百ISO兼容的SQL语句。

9.4 数字函数

9.4.1 四舍五入和截断函数

  • CELL:返回大于或等于指定值的最小整数。
  • FLOOR:返回小于或等于指定值的最大整数。
  • FOUND:对一个数字执行四舍五入操作。
  • TRUNC:把一个数字按照指定的小数位数截断。
原文地址:https://www.cnblogs.com/tjpanda88/p/2253074.html