数学函数
数学函数通常返回对数值数据进行数学运算的操作结果。数学函数的形式:
function_name (arguments)
Integer_expr可以是任何一种整数数据类型:int、smallint或tinyint;
Float_expr可以是任何一种整数或浮点类型;
Numeric_expr可以是任何的整数、浮点或money类型。
函数名 | 参数 | 返回结果 |
Abs | (numeric) | 表达式的绝对值。返回结果与数字表达式类型相同且精度和标度相同 |
Acos | (approx_numeric) | 返回反余弦函数值(弧度) |
Asin | (approx_numeric) | 返回反正弦函数值(弧度) |
Atan | (approx_numeric) | 返回反正切函数值(弧度) |
Atn2 | (approx_numeric1, approx_numeric2) | 返回approx_numeric/approx_numeric2的反正切函数值(弧度) |
Ceiling | (numeric_expr) | 大于等于指定值的最小整数。返回结果与数字表达式类型相同。对于numeric和decimal类型表达式,返回结果的精度同表达式相同而标度不同 |
Cos | (approx_numeric) | 返回指定角度(弧度)的余弦函数值 |
Cot | (approx_numeric) | 返回指定角度(弧度)的余切函数值 |
Degress | (numeric_expr) | 把弧度值转成角度值。返回结果与数字表达式类型相同。对于numeric和decimal类型的表达式,返回结果的精度为77而标度与表达式的标度相同。当使用money数据类型时,内部转换为float并丢掉精度。 |
Exp | (float_expr) | 指定值的指数值 |
Floor | (numeric_expr) | 小于等于指定值的最大整数。返回结果与数字表达式类型相同。当表达式的数据类型为numeric或decimal时,结果的精度与表达式相同而标度为0 |
Log | (float_expr) | 指定值的自然对数值 |
Log10 | (float_expr) | 指定值的以10为底的对数值 |
Pi | () | 返回值为3.1415926的常量 |
Power | (numeric,power) | 返回numerci和power次幂。返回结果与数字表达式类型相同。对于numeric和decimal类型的表达式,返回结果的精度为77而标度与表达式的标度相同。当使用money数据类型时,内部转换为float并丢掉精度。 |
Radians | (numeric_expr) | 把角度值转成弧度值。返回结果与数值表达式类型相同。对于numeric和decimal类型的表达式,返回结果的精度为77而标度与表达式的标度相同.当使用money数据类型时,内部转换为float并丢掉精度 。 |
Rand | ([integer]) | 返回0或1之间的随机浮点数。可选项integer_expr是种子。 |
Round | (numeric,integer) | 把数值表达式四舍五入到指定的integer位。如果integer是正数,则确定小数点的右边有效位数,如果integer是负数,则确定小数点左边的有效位。返回数据与表达式的数据类型相同。对于numeric和decimal数据类型的表达式,返回结果的精度为第一个参数的精度加1,而标度同表达式的标度相同 |
Sign | (numeric) | 返回值的符号:正数(+1),零(0),或负数(-1)。返回结果与数字表达式类型相同,并且精度和标度也相同。 |
Sin | (numeric) | 返回指定角度(弧度)的正弦函数值 |
Tan | (numeric) | 返回指定角度(弧度)的正切函数值 |
Sqrt | (float_expr) | 返回指定值的平方根。返回值必须为正数或 0 |
数学内部函数用于对数值数据进行计算。一些函数要求整型数据和近似数值类型数据。很多的函数用于操作精确数值类型,近似数值类型,money和float数据类型。内部函数用于精确数值类型,近似数值类型,money和float数据类型。内部函数对float类型操作的缺省精确度是6位小数。出错陷阱用来处理数学函数的值域或返回错误。用户可使用set命令来设置arithabort或arithignore选项。在缺省情况下,arithabort的两个悬项arithabort_overflow和arithboart numeric_trunaction都设置为on.
当选项arithabort arith_overflow设置为on时,如果出现被0除的情况,或是在进行显式或隐式的数据类型转换时损失了精度,则整个事务或批命令被回退。如果选项arithabort arith_overflow设置为off,Adaptive Server 就会放弃产生错误的命令,但继续处理事务或命令。
选项arithabort arith_truncation处理隐式的数据类型转换时出现的损失标度的情况。当该选项被设置为on时,将放弃产生错误的命令并继续处理事物或批命令中的后续命令。如果该选项被设置为off,则adaptive server会自动截短查询结果并继续处理。
在缺省情况下,arithignore arith_overflow被设置为off。此时,在出现被0除错误或失去精读时,adaptive server显示信息。而此选项被设置为on时,则在出现错误之后忽略警告信息。
例子
select floor(123.45) 123
select floor(-123.45) -124
select floor($123.45) 123.00
select ceiling(123.45) 124
select ceiling(-123.45) -123
select ceiling($123.45) 124.00
select round(123.4545,2) 123.4500
select round(123.45,-2) 100.00
round函数总返回一个值,即使其长度是非法的。如果指定长度是正值并且长于小数点后的位数,则零加在小数位后。如果长度是负数并且大于或等于小数点前的位数,round将返回0.00