【数据库】Oracle中的数值型及处理方法 |
您所在的位置:网站首页 › 当数据表中货币型数据的小数部分 › 【数据库】Oracle中的数值型及处理方法 |
oracle中最重要的数值型为number。尽管在实际开发中,可以利用integer来定义列或者变量,但oracle仍然推荐用户统一使用number类型。接下来,本文将说明: 数值型简介 数值型函数
1、oracle中的数值型 oracle中的数值型仅有一种,即为number类型。该类型的使用方法如下: number [ ( precision [ , scale ])] 其中,precision代表该数值型的精度;而scale则指定小数后的位数,由于precision和scale均为可选,因此,既可以指定number类型的精度,也可以直接使用number类型进行声明。precision的取值范围为1=select ceil(23.45) result from dual; ----------- 24 ceil(23.45)返回大于等于23.45的最小整数24. 同样,ceil()函数的参数还有可能为负数。 SQL>select ceil(-23.45) result from dual; ------------- -23
2.4 向下取整------floor()函数 与ceil()函数相反,floor()函数用于返回小于等于参数值的最大整数。 例子:演示floor()函数的使用。 SQL>select floor(23.45) result from dual; ---------------- 23 SQL>select floor(-23.45) result from dual; --------------- -24
2.5 取模操作----mod()函数 mod()函数用于返回一个除法表达式的余数。很明显,该函数要求两个参数---被除数和除数,其语法形式如下: mod(被除数,除数) 例子:演示mod()函数的使用 SQL>select mod(5,2) result from dual; ------------ 1 mod(5,2)用于获得5/2的余数,该余数为1. 值得注意的是,在mod()函数中,被除数可以为0,如下所示: SQL>select mod(5,0) result from dual; ---------- 5 当除数为0,时,mod()函数返回的值永远为被除数。
2.6 返回数字的正负性---sign()函数 一个数字是正数、负数还是0,可以通过多个if判断来实现。除此之外,oracle还提供了sign()函数来获得参数的正负性。当参数大于0时,sign()函数返回1;当参数小于0时,sign()函数返回-1;当参数等于0,sign()函数将返回0.
2.7 返回数字的平方根---sqrt()函数 sqrt()函数用于返回数字的平方根,从平方根的意义可以看出,该函数的参数不能小于0. 例子:利用sqrt()函数返回参数的平方根 SQL>select sqrt(4) result from dual; ------------ 2 sqrt(4)用于返回数值4的平方根2,如果参数小于0,oracle将抛出错误。 SQL>select sqrt(-4) result from dual; ORA-01428:argument'-4' is out of range 表示,参数-4超出了有效值范围。
2.8 乘方运算----power()函数 power()函数用于进行乘方运算,该函数有两个参数,第一个参数为乘方运算的底数,第二个参数为乘方运算的指数,其调用方式如下: power(底数,指数) 例子:利用power()函数进行乘方运算。 SQL>select power(4,3) result from dual; --------------- 64 power(4,3),4为底数,3为指数,power(4,3)用于获得4的3次方,其值为64.
2.9 截取数字-----trunc()函数 trunc()函数用于截取函数,当参数为数字时,trunc()函数将截取部分数字,其工作机制非常类似于round()函数,但是trunc()函数并不进行四舍五入操作,而是直接舍去。该函数的调用语法如下。 trunc(元数值[,小数位数]) 例子:利用trunc()函数截取部分数字 当小数位数大于0时,表示截取至原数值的小数点之后的位数。 SQL>select trunc(3.789,2) trunc_result, round(3.789,2) round_result from dual; TRUNC_RESULT ROUND_RESULT ---------------------- ------------------------ 3.78 3.79 trunc(3.789,2) 截取3.789小数点之后两位数字,其值为3.78,;相比之下,round(3.789,2)是利用了四舍五入的方式保留至小数点之后两位数字,其值为3.79. 当小数位数为0,或者小数位数被省略时,trunc()函数将截取元数值的整数部分。 SQL>select trunc(3.789,0) result from dual; ----- 3 SQL>select trunc(3.789) result from dual; ------- 3
2.10 将ASCII码转换为字符----chr()函数 同其他编程语言一样,oracle也提供了讲ASCII码转换为字符的函数。chr()函数仅含有一个函数,chr()函数将该参数翻译为实际字符。 例子:利用chr()函数将ASCII码转换为字符。 SQL>select chr(65) character from dual; --------------- A chr()函数的一个典型应用场景为向数据表中插入不宜直接插入的字符。在oracle中,“&”用来进行变量引用。因此当尝试向表中插入的数据含有该符号时,oracle可能会将其解释为变量引用。 SQL>insert into test_char(f_char) valuse('&id=1'); 此时,PL/SQL Developer 将给出提示窗口,要求输入变量ID的值,如图:
处理该问题时,当然可以首先将其define选项关闭,再执行插入,如下所示: SQL>set define off SQL>insert into test_char(f_char) values('&id=1'); 1 row inserted SQL>roollback; Rollback complete 也可以利用chr()函数获得愿义字符“&”. SQL>insert into test_char(f_char) values(chr(38)) || 'id=1' ); 1 row inserted SQL>select f_char from test_char; F_CHAR -------- &id=1 38为字符“&”的ASCII码;chr(38)||‘id=1’用于获得字符串“&id=1”.
2.11 格式化数值---to_char()函数 to_char()函数可以将数值进行格式化,并返回格式化后的字符串,其调用格式如下: to_char(元数值,格式) to_char()函数中的格式参数比较复杂,下面将讲述其中最常用的几种。 例子:to_char()函数格式参数由一系列的字符组成,常用的字符包括:0、9、,、FM、$、L。 (1)逗号(,):分组符号。常见的千位分隔符; (2)FM:Format Mask屏蔽所有不必要的空格和0; (3)$:美元符号 (4)C:与系统环境相关的国际货币符号。 A. 格式化字符“0” 0,代表一个数字位。当原数值没有数字位与之匹配时,强制添加0. SQL>select to_char(12.78, '000.000') result from dual; ------------------ 012.780 格式化000.000代表将数字格式化为小数点前后各3位。 如果元数值没有数字位与之对应,则使用0进行填充,其结果为0.12780.
B. 格式字符“9” 9,代表一个数字位。当元数值中的整数部分没有数字位与之匹配时,不填充任何字符。 SQL>select to_char(12.78, '999.999') result from dual; --------------------- 12.780 当使用9代替0之后,整数部分中没有数字与格式符对应时,将忽略该位,那么将返回12.780。但是,对于小于1的小数来说,所有格式符均使用9,返回值往往并非期望值。 SQL>select to_char(0.78,'999.999') result from dual; -------------- .780 很明显,“.78”并非好的表现形式,因此,格式参数中的各位使用“0”是更好的选择。 SQL>select to_char(0.78,'990.999') result from dual; ------------------- 0.780
C. 格式字符“,” 逗号(,)【一定要是英文半角逗号】,分组符号。常见的应用为千位分隔符。 SQL>select to_char(4560000, '99,999,990.00') result from dual; ------------------- 4560,000.00 格式参数99,999,990.00表示整数部分需要利用逗号作为千位分隔符,以格式元数值。
D. 格式字符“FM”------Format Mask 当使用to_char()函数进行数值格式化时,返回值在最前面都不可避免的添加了空格符。 SQL>select to_char(12.78,'999.999') result, to_char(12.78,'FM999.999') fm_result from dual; RESULT FM_RESULT ------------ ------------------ 12.780 12.78 对比使用了FM与没有使用FM的返回值可知,FM格式符的意义在于屏蔽所有不必要的空格和0.
E. 格式字符“$” to_char()函数的一个典型应用场景为货币数量格式化。为了标识货币,通常在数值之前添加“$”。在to_char()函数中,同样可以利用格式字符"$"在返回值的开头添加美元符号。 SQL>select to_char(12.78,'$999.999') result from dual; ----------- $12.780 SQL>select to_char(12.78,'999.9$99') result from dual; ---------- $12.780 从以上结果可以看出来,$不一定非得出现在前头,但是FM必须得在前头。 "$FM999.999"中,“$”出现在开头位置,而"FM"紧随其后;ORA-01481:invalid number format model意为不可用的数字格式。 如果,两者对调位置,可执行。 SQL>select to_char(12.78, 'FM$999.999') result from dual; ----------- $12.78
F. 格式字符“L” 美元符号表示货币,但是货币标识往往具有本地化的色彩。例如:在我国,通常使用“¥”而非$。在to_char()函数中,使用“L”指定本地化的货币标识。 SQL>select to_char(12.78,'FML999.999') result from dual; ------------- ¥12.78 分析to_char()函数的返回值可知,格式字符“L”在开头添加了货币标识“¥”。
G. 格式字符“C” 通常,货币标识只能表示是否为货币,而货币种类无法进行区分。在to_char()函数中,还提供了另外一个格式字符“C”,该字符见返回与数据库环境相关的货币种类符号。 SQL>select to_char(12.78,‘FM999.999C’) result from dual; ---------------------- 12.78CNY
H. 十进制数字转换为十六进制 将十进制数字转换为十六进制,实际是以字符串形式来展现。可以利用to_char()函数来实现,此时使用到的格式字符为“X” SQL>select to_char(255,'xxx') from dual; ---------- ff 这里需要注意的是,格式化字符串“xxx”中"x"的位数不能小于实际十六进制数的位数。否则,将无法获得正确的结果,例如: SQL>select to_char(255, 'x') from dual; ----- ##
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |