最近可能需要干一些数据分析的活,想到能否先用SQL实现一些算法,事不宜迟,第一步必须了解一些基础的数学函数和操作符。
编号 | 操作符 | 描述 | 栗子 | 结果 |
---|---|---|---|---|
001 | + | 加 | select 32+90 | 122 |
002 | - | 减 | select 100-23 | 77 |
003 | * | 乘 | select 5*3 | 15 |
004 | / | 除(整数除法会截断结果) | select 9/3 select 9/4 | 3 2 |
005 | % | 模(求余) | select 9%4 | 1 |
006 | ^ | 冥(指数运算) | select 3^2 | 9 |
007 | |/ | 平方根 | select |/ 36 | 6 |
008 | ||/ | 立方根 | select ||/ 27 | 3 |
009 | ! | 阶乘 | select 6 ! | 720 |
010 | !! | 阶乘(前缀操作符) | select !! 6 | 720 |
011 | @ | 绝对值 | select @(-2) | 2 |
012 | & | 二进制 AND | select 91 & 15 | 11 |
013 | | | 二进制 OR | select 32 | 3 | 35 |
014 | # | 二进制 XOR | select 32 # 3 | 35 |
015 | ~ | 二进制 NOT | select ~1 | -2 |
016 | << | 二进制 左移 | select 1<<4 | 16 |
017 | >> | 二进制右移 | select 8 >> 2 | 2 |
数学符号
注:dp代表 double precision。处理double precision数据的函数大多数是在宿主系统的C库的基础上实现的;因此,精度和数值范围方面的行为是根据宿主系统而变化的。
编号 | 函数 | 返回类型 | 描述 | 栗子 | 结果 |
018 | abs(x) | (与输入值相同) | 绝对值 | select abs(-19) | 19 |
019 | cbrt(x) | dp | 立方根 | select cbrt(216) | 6 |
020 | ceil(dp 或numeric) | (与输入值相同) | 不小于参数的最小整数 | select ceil(216.7) | 217 |
021 | ceiling(dp 或 numeric) | (与输入值相同) | 不小于参数的最小整数(ceil的别名) | select ceiling(-97.2) | 97 |
022 | degrees(dp) | dp | 把弧度转为角度 | select degrees(0.5) | 28.6478897565412 |
023 | div(y numeric, x numeric) | numeric | integer quotient of y/x | select div(9,4) | 2 |
024 | exp(dp 或 numeric) | (与输入值相同) | 自然对数 | select LN(2.0) | 0.6931471805599453 |
025 | log(dp 或 numeric) | (与输入值相同) | 以10为底的对数 | select log(100) | 2 |
026 | log(b numeric, x numeric) | numeric | 以b为底数的对数 | select log(10.0,100.0) | 2.0000000000000000 |