前言:
现时我们对“oracle乘方”大约比较关心,小伙伴们都需要知道一些“oracle乘方”的相关内容。那么小编在网上搜集了一些关于“oracle乘方””的相关文章,希望朋友们能喜欢,咱们快快来学习一下吧!SQL 的主要功能就是对数据进行处理和分析。为了提高数据处理的效率,SQL 为我们提供了许多预定义的功能模块,也就是函数(Function)。
数值函数通常接收一个或者多个数字类型的参数,并且返回一个数值结果。本文比较五种主流数据库常用数值函数的实现和差异,包括 MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite。
数值函数
函数功能
MySQL
Oracle
SQL Server
PostgreSQL
SQLite
ABS(x)
计算x的绝对值
✔️
✔️
✔️
✔️
✔️
CEILING(x)
返回大于或等于x的最小整数
✔️
CEIL(x)
✔️
✔️
CEIL(x)
FLOOR(x)
返回小于或等于x的最大整数
✔️
✔️
✔️
✔️
✔️
MOD(x, y)
计算x除以y的余数
✔️
✔️
x % y
✔️
x % y
ROUND(x, n)
将x四舍五入到n位小数
✔️
✔️
✔️
✔️
✔️
RANDOM()
返回一个伪随机数
RAND()
DBMS_RANDOM
RAND()
✔️
✔️
绝对值函数
ABS(x) 函数计算输入参数的绝对值,例如:
SELECT ABS(-1), ABS(1), ABS(0)FROM employeeWHERE emp_id = 1;
查询返回的结果如下:
ABS(-1)|ABS(1)|ABS(0)-------|------|------ 1| 1| 0取整函数
CEIL(x) 和 CEILING(x) 函数返回大于或等于 x 的最小整数,也就是向上取整。FLOOR(x) 函数返回小于或等于 x 的最大整数,也就是向下取整。例如:
SELECT CEIL(-2), CEILING(-2), FLOOR(4.5)FROM employeeWHERE emp_id = 1;
Oracle 不支持 CEILING(x) 函数,Microsoft SQL Server 不支持 CEIL(x) 函数。查询返回的结果如下:
CEIL(-2)|CEILING(-2)|FLOOR(4.5)--------|-----------|---------- -2| -2| 4
ROUND(x, n) 函数将 x 四舍五入到 n 位小数,也就是执行四舍五入运算。例如:
SELECT ROUND(9.456, 1), ROUND(9.456)FROM employeeWHERE emp_id = 1;
第二个函数调用时省略了参数 n,表示四舍五入到整数。Microsoft SQL Server 不能省略参数 n,可以将 ROUND(9.456) 替换成 ROUND(9.456, 0)。查询返回的结果如下:
ROUND(9.456, 1)|ROUND(9.456)---------------|------------ 9.5| 9求余函数
MOD(x, y)函数计算 x 除以 y 的余数,也就是执行求模运算。例如:
-- Oracle、MySQL 以及 PostgreSQLSELECT MOD(5,3)FROM employeeWHERE emp_id = 1;
Oracle、MySQL 以及 PostgreSQL 实现了 MOD 函数。查询返回的结果如下:
MOD(5,3)-------- 2
Microsoft SQL Server 和 SQLite 没有提供 MOD 函数,可以使用%运算符进行求模运算:
-- Microsoft SQL Server、MySQL、PostgreSQL 以及 SQLiteSELECT 5 % 3FROM employeeWHERE emp_id = 1;
MySQL 和 PostgreSQL 也支持这种语法。查询返回的结果和上面的示例相同。
生成伪随机数
通过计算机生成的随机数都是伪随机数,数据库都提供了生成伪随机数的函数。
MySQL 使用 RAND 函数返回一个大于或等于 0 且小于 1 的随机数。Microsoft SQL Server 也使用 RAND 函数返回随机数,但是随机数的取值范围为大于 0 且小于 1。例如:
-- MySQL 和 Microsoft SQL ServerSELECT RAND()FROM employeeWHERE emp_id <= 3;
对于 MySQL 而言,在一个查询语句中的多次 RAND 函数调用都会返回不同的随机数。查询返回的结果如下:
RAND() -------------------0.125978893717731240.62883365492227830.7662316241918427
对于 Microsoft SQL Server 而言,在一个查询语句中的多次 RAND 函数调用返回相同的随机数。查询返回的结果如下:
RAND() -------------------0.472241415009635730.472241415009635730.47224141500963573
一般来说,如果你运行上面的示例将会得到不同的随机数。不过,我们也可以为 RAND 函数指定一个随机数种子,重现相同的随机数。例如:
-- MySQL 和 Microsoft SQL ServerSELECT RAND(1);
其中,函数中的参数 1 是随机数种子。多次执行以上查询将会返回相同的结果。
Oracle 提供了一个系统程序包 DBMS_RANDOM,其中的 VALUE 函数可以用于返回大于或等于 0 且小于 1 的随机数。例如:
-- OracleSELECT DBMS_RANDOM.VALUEFROM employeeWHERE emp_id <= 3;
查询返回的结果如下:
VALUE ----------------------------------------0.180489253851537163902550395231967674110.33536317579350885478570716023033925950.3412188906823928592522036537134902456
对于 Oracle,每次调用 RAND 函数都会返回不同的随机数。
提示:Oracle 系统程序包 DBMS_RANDOM 中还提供了其他生成随机数和随机字符串的函数,以及设置随机数种子的方法,可以查看其官方文档。
PostgreSQL 提供了 RANDOM 函数,可以返回一个大于或等于 0 且小于 1 的随机数。例如:
-- PostgreSQLSELECT RANDOM()FROM employeeWHERE emp_id <= 3;
查询返回的结果如下:
random ------------------0.15237884851378070.25807849599384270.0528612944722024
对于 PostgreSQL,每次调用 RANDOM 函数都会返回不同的随机数。如果想要重现相同的随机数,可以使用 SETSEED 函数。例如,重复执行以下两个语句可以得到相同的随机数:
-- PostgreSQLSELECT SETSEED(0);SELECT RANDOM();
SQLite 也提供了 RANDOM 函数,可以返回一个大于或等于-263 且小于或等于 263-1 的随机整数。例如:
-- SQLiteSELECT RANDOM()FROM employeeWHERE emp_id <= 3;
查询返回的结果如下:
RANDOM() --------------------3344080139226703236-44447342629455920048384000175497818543
对于 SQLite,每次调用 RANDOM 函数都会返回不同的随机数。SQLite 不支持随机数种子设置,无法重现相同的随机数。
提示:除我们上面介绍的函数外,SQL 还提供其他的数值函数,例如乘方和开方函数、对数函数以及三角函数,有需要时可以查看数据库相关的文档。
标签: #oracle乘方