SQL数学函数
功能描述
数学函数为标量函数中的一种,只支持数值类型的字段,能够实现对数值进行取整、取绝对值、求余等功能,具体请参考表1。
在数学运算中,如果表达式里涉及的操作数皆为整数,那么SQL将会采用整数运算,否则便会切换到浮点运算。您可以将其中一个操作数转换为FLOAT类型来强制进行切换,运行时SQL会将大多数表达式中的32位浮点数扩展到64位。
语法格式
SELECT ABS(fieldname1) AS fieldname1_abs
数学函数语句
| 语句 | 说明 | 示例 | 
|---|---|---|
| ABS(expr) | 取绝对值。 | SELECT ABS(fieldname1) | 
| CEIL(expr) | 向上取整,即向上取最接近的整数值 | SELECT CEIL(fieldname1) | 
| FLOOR(expr) | 向下取整,即向下取最接近的整数值。 | SELECT FLOOR(fieldname1) | 
| TRUNCATE(expr, digits) | 将expr截断为特定的digits位数。如果数字为负数,则会截断小数点左侧的许多位置。如果未指定,数字默认为零。 | SELECT TRUNCATE(fieldname1, 2) | 
| ROUND(expr, digits) | ROUND(expr, digits)对expr值进行四舍五入,保留小数位数由digits指定。expr可以是整数或浮点数,但digits必须是整数。返回值的类型由expr的类型决定。如果没有指定digits,则使用默认值0。如果digits是负数,则返回expr四舍五入后的整数。当expr是非数字值时,会被转换为数字0。如果expr是无限位数的数字,则被转换为最接近的DOUBLE类型的有限位数的数字。 | SELECT ROUND(fieldname1, 2) | 
| x + y | 加法。 | SELECT fieldname1 + fieldname2 | 
| x - y | 减法。 | SELECT fieldname1 - fieldname2 | 
| x * y | 乘法。 | SELECT fieldname1 * fieldname2 | 
| x / y | 除法。 | SELECT fieldname1 / fieldname2 | 
| MOD(x, y) | 求余,即取x除以y后的余数。 | SELECT MOD(fieldname1, fieldname2) | 
| LN(expr) | 对数(以e为底)。 | SELECT ln(expr) | 
| LOG10(expr) | 对数(以10为底)。 | SELECT LOG10(expr) | 
| POWER(expr,power) | expr的power次幂。 | SELECT POWER(expr ,2) | 
| SQRT(expr) | expr的平方根 | SELECT SQRT(expr) | 
| SIN(expr) | 正弦 | SELECT SIN(expr) | 
| COS(expr) | 余弦 | SELECT COS(expr) | 
| TAN(expr) | 正切 | SELECT TAN(expr) | 
| COT(expr) | 余切 | SELECT COT(expr) | 
| ASIN(expr) | 反正弦 | SELECT ASIN(expr) | 
| ACOS(expr) | 反余弦 | SELECT ACOS(expr) | 
| ATAN(expr) | 反正切 | SELECT ATAN(expr) | 
示例及说明
ACOS(expr)函数
求参数值的反余弦,y=arccosx,x的取值范围[-1,1]。
- 字段样例
     x:0.5 
- 查询和分析语句
     select ACOS(x)
- 查询和分析结果
     表2 查询和分析结果 x EXPR$1 0.5 1.0471975511965979 
ATAN(expr)函数
ATAN求参数值的反正切,y= arctanx,x的取值范围R。
- 字段样例
     x:0.5 
- 查询和分析语句
     select ATAN(X)
- 查询和分析结果
     表3 查询和分析结果 x EXPR$1 0.5 1.0471975511965979 
ATAN2(expr)函数
ATAN2从直角坐标(x,y)到极坐标(r,θ)的转换角度θ。
- 字段样例
     x:3;y:4 
- 查询和分析语句
     SELECT x , y, ATAN2(x,y) 
- 查询和分析结果
     表4 查询和分析结果 x y EXPR$0 3 4 0.6435011087932844 
 
  