数字操作函数
abs(x)
描述:绝对值。
返回值类型:和输入相同。
示例:
1 2 3 4 5 |
gaussdb=# SELECT abs(-17.4); abs ------ 17.4 (1 row) |
acos(x)
描述:反余弦。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT acos(-1); acos ------------------ 3.14159265358979 (1 row) |
asin(x)
描述:反正弦。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT asin(0.5); asin ------------------ .523598775598299 (1 row) |
atan(x)
描述:反正切。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT atan(1); atan ------------------ .785398163397448 (1 row) |
atan2(y, x)
描述:y/x的反正切。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT atan2(2, 1); atan2 ------------------ 1.10714871779409 (1 row) |
bitand(integer, integer)
描述:计算两个数字与运算(&)的结果。
返回值类型:bigint类型数字。
示例:
1 2 3 4 5 |
gaussdb=# SELECT bitand(127, 63); bitand -------- 63 (1 row) |
cbrt(dp)
描述:立方根。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT cbrt(27.0); cbrt ------ 3 (1 row) |
ceil(x)
描述:不小于参数的最小的整数。
返回值类型:整数。
示例:
1 2 3 4 5 |
gaussdb=# SELECT ceil(-42.8); ceil ------ -42 (1 row) |
ceiling(dp or numeric)
描述:不小于参数的最小整数(ceil的别名)。
返回值类型:dp or numeric,不考虑隐式类型转换的情况下与输入相同。
示例:
1 2 3 4 5 |
gaussdb=# SELECT ceiling(-95.3); ceiling --------- -95 (1 row) |
cos(x)
描述:余弦。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT cos(-3.1415927); cos ------------------- -.999999999999999 (1 row) |
cosh(x)
描述:双曲余弦。
返回值类型:dp or numeric,不考虑隐式类型转换的情况下与输入相同。
示例:
1 2 3 4 5 |
gaussdb=# SELECT cosh(4); cosh ------------------- 27.3082328360165 (1 row) |

此函数在A兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下有效。
cot(x)
描述:余切。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT cot(1); cot ------------------ .642092615934331 (1 row) |
degrees(dp)
描述:把弧度转为角度。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT degrees(0.5); degrees ------------------ 28.6478897565412 (1 row) |
div(y numeric, x numeric)
描述:y除以x的商的整数部分。
返回值类型:numeric
示例:
1 2 3 4 5 |
gaussdb=# SELECT div(9,4); div ----- 2 (1 row) |
exp(x)
描述:自然指数。
返回值类型:dp or numeric,不考虑隐式类型转换的情况下与输入相同。
示例:
1 2 3 4 5 |
gaussdb=# SELECT exp(1.0); exp -------------------- 2.7182818284590452 (1 row) |
floor(x)
描述:不大于参数的最大整数。
返回值类型:与输入相同。
示例:
1 2 3 4 5 |
gaussdb=# SELECT floor(-42.8); floor ------- -43 (1 row) |
int1(in)
描述:将传入的text参数转换为int1类型值并返回。
返回值类型:int1
示例:
1 2 3 4 5 6 7 8 9 10 |
gaussdb=# SELECT int1('123'); int1 ------ 123 (1 row) gaussdb=# SELECT int1('1.1'); int1 ------ 1 (1 row) |
int2(in)
描述:将传入参数转换为int2类型值并返回。
支持的入参类型包括float4、float8、int16、numeric、text。
返回值类型:int2
示例:
1 2 3 4 5 6 7 8 9 10 |
gaussdb=# SELECT int2('1234'); int2 ------ 1234 (1 row) gaussdb=# SELECT int2(25.3); int2 ------ 25 (1 row) |
int4(in)
描述:将传入参数转换为int4类型值并返回。
支持的入参类型包括bit、boolean、char、double precision、int16、numeric、real、smallint、text。
返回值类型:int4
示例:
1 2 3 4 5 6 7 8 9 10 |
gaussdb=# SELECT int4('789'); int4 ------ 789 (1 row) gaussdb=# SELECT int4(99.9); int4 ------ 100 (1 row) |
int8(in)
描述:将传入参数转换为int8类型值并返回。支持的入参类型包括:bit、double precision、int16、integer、numeric、oid、real、smallint、text。
返回值类型:int8
示例:
1 2 3 4 5 6 7 8 9 10 |
gaussdb=# SELECT int8('789'); int8 ------ 789 (1 row) gaussdb=# SELECT int8(99.9); int8 ------ 99 (1 row) |
float4(in)
描述:将传入参数转换为float4类型值并返回。支持的入参类型包括:bigint、double precision、int16、integer, numeric、smallint、text。
返回值类型:float4
示例:
1 2 3 4 5 6 7 8 9 10 11 |
gaussdb=# SELECT float4('789'); float4 -------- 789 (1 row) gaussdb=# SELECT float4(99.9); float4 -------- 99.9 (1 row) |
float8(in)
描述:将传入参数转换为float8类型值并返回。支持的入参类型包括:bigint、int16、integer、numeric、real、smallint、text。
返回值类型:float8
示例:
1 2 3 4 5 6 7 8 9 10 11 |
gaussdb=# SELECT float8('789'); float8 -------- 789 (1 row) gaussdb=# SELECT float8(99.9); float8 -------- 99.9 (1 row) |
int16(in)
描述:将传入参数转换为int16类型值并返回。支持的入参类型包括:bigint、boolean、double precision、integer、numeric、oid、real、smallint、tinyint。
返回值类型:int16
示例:
1 2 3 4 5 6 7 8 9 10 11 |
gaussdb=# SELECT int16('789'); int16 -------- 789 (1 row) gaussdb=# SELECT int16(99.9); int16 -------- 100 (1 row) |
numeric(in)
描述:将传入参数转换为numeric类型值并返回。支持的入参类型包括:bigint、boolean、double precision、int16、integer、money、real、smallint。
返回值类型:numeric
示例:
1 2 3 4 5 6 7 8 9 10 11 |
gaussdb=# SELECT "numeric"('789'); numeric --------- 789 (1 row) gaussdb=# SELECT"numeric"(99.9); numeric --------- 99.9 (1 row) |
oid(in)
描述:将传入参数转换为oid类型值并返回。支持的入参类型包括:bigint、int16。
返回值类型:oid
radians(dp)
描述:把角度转为弧度。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT radians(45.0); radians ------------------ .785398163397448 (1 row) |
random()
描述:0.0到1.0之间的随机数。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT random(); random ------------------ .824823560658842 (1 row) |
rand([seed])
描述:可以无入参,也可以接受一个bigint类型的seed入参。返回0到1之间的随机数,如果指定seed,则返回随机数种子seed的随机值。
参数:bigint类型,指定一个随机数种子。
返回值类型:double
示例:
1 2 3 4 5 6 7 8 9 10 11 |
b_compatible_db=# SELECT rand(); rand ------------------ .327476012520492 (1 row) b_compatible_db=# SELECT rand(12321); rand ------------------ .326073104515672 (1 row) |

该函数在数据库参数sql_compatibility = 'B'时生效。返回值会省略后置0。
multiply(x double precision or text, y double precision or text)
描述:x和y的乘积。
返回值类型:double precision
示例:
1 2 3 4 5 6 7 8 9 10 |
gaussdb=# SELECT multiply(9.0, '3.0'); multiply ------------------- 27 (1 row) gaussdb=# SELECT multiply('9.0', 3.0); multiply ------------------- 27 (1 row) |
ln(x)
描述:自然对数。
返回值类型:dp or numeric,不考虑隐式类型转换的情况下与输入相同。
示例:
1 2 3 4 5 |
gaussdb=# SELECT ln(2.0); ln ------------------- .6931471805599453 (1 row) |
log(x)
描述:以10为底的对数。
返回值类型:与输入相同。
示例:
1 2 3 4 5 |
gaussdb=# SELECT log(100.0); log -------------------- 2.0000000000000000 (1 row) |
log(b numeric, x numeric)
描述:以b为底的对数。
返回值类型:numeric
示例:
1 2 3 4 5 |
gaussdb=# SELECT log(2.0, 64.0); log -------------------- 6.0000000000000000 (1 row) |
log2(x)
描述:以2为底的对数。
返回值类型:double precision。
示例:
1 2 3 4 5 |
gaussdb=# SELECT log2(2); log2 ------ 1 (1 row) |

该函数在数据库参数sql_compatibility = 'B'时生效。
log10(x)
描述:以10为底的对数。
返回值类型:double precision。
示例:
1 2 3 4 5 |
gaussdb=# SELECT log10(10); log10 ------- 1 (1 row) |

该函数在数据库参数sql_compatibility = 'B'时生效。
mod(x,y)
描述:x/y的余数(模)。如果x是0,则返回0。
返回值类型:在(text, int)入参时返回numeric类型,其余入参时,返回值类型与参数类型相同。
示例:
1 2 3 4 5 |
gaussdb=# SELECT mod(9,4); mod ----- 1 (1 row) |
1 2 3 4 5 |
gaussdb=# SELECT mod(9,0); mod ----- 9 (1 row) |

此函数在A兼容模式数据库下且在参数a_format_version值为10c和a_format_dev_version值为s6的情况下,mod函数支持mod(text, int)重载,在以(text, int)为入参类型调用mod函数时,会优先选择mod(text, int)。
1 2 3 4 5 6 7 8 9 |
gaussdb=# SET a_format_version='10c'; SET gaussdb=# SET a_format_dev_version='s6'; SET gaussdb=# SELECT mod('170141183460469231731687303715884105728', 7); mod ----- 2 (1 row) |
pi()
描述:“π”常量。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT pi(); pi ------------------ 3.14159265358979 (1 row) |
power(a double precision, b double precision)
描述:a的b次幂。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT power(9.0, 3.0); power ---------------------- 729.0000000000000000 (1 row) |
remainder(x,y)
描述:x/y的余数,如果y是0,则报错。
返回值类型:与输入相同(float4、float8或者numeric类型)
示例:
1 2 3 4 5 6 7 8 |
gaussdb=# SELECT remainder(11,4); remainder ---------- -1 (1 row) gaussdb=# SELECT remainder(9,0); ERROR: division by zero CONTEXT: referenced column: remainder |

此函数在A兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下有效。
round(x)
描述:离输入参数最近的整数。
返回值类型:与输入相同(double precision或者numeric类型)。
示例:
1 2 3 4 5 6 7 8 9 10 11 |
gaussdb=# SELECT round(42.4); round ------- 42 (1 row) gaussdb=# SELECT round(42.6); round ------- 43 (1 row) |

1 2 3 4 5 |
gaussdb=# SELECT round(-0.2::float8); round ------- -0 (1 row) |
round(v numeric, s int)
描述:保留小数点后s位,s后一位进行四舍五入。
返回值类型:numeric
示例:
1 2 3 4 5 |
gaussdb=# SELECT round(42.4382, 2); round ------- 42.44 (1 row) |

- 控制参数s输入为小数时:在A兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s1的情况下s截断为整数,否则s四舍五入为整数。
- 在参数a_format_version值为10c和a_format_dev_version值为s1的情况下,round函数支持round(timestamp, text)重载,在以(text, text)或(text, '')为入参调用round函数时会优先选择round(timestamp, text)。
setseed(dp)
描述:为随后的random()调用设置种子(-1.0到1.0之间,包含)。
返回值类型:void
示例:
1 2 3 4 5 |
gaussdb=# SELECT setseed(0.54823); setseed --------- (1 row) |
sign(x)
描述:输出此参数的符号。
返回值类型:-1表示负数,0表示0,1表示正数。
示例:
1 2 3 4 5 |
gaussdb=# SELECT sign(-8.4); sign ------ -1 (1 row) |
sin(x)
描述:正弦。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT sin(1.57079); sin ------------------ .999999999979986 (1 row) |
sinh(x)
描述:双曲正弦。
返回值类型:dp or numeric,不考虑隐式类型转换的情况下与输入相同。
示例:
1 2 3 4 5 |
gaussdb=# SELECT sinh(4); sinh ------------------ 27.2899171971277 (1 row) |

此函数在A兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下有效。
sqrt(x)
描述:平方根。
返回值类型:dp or numeric,不考虑隐式类型转换的情况下与输入相同。
示例:
1 2 3 4 5 |
gaussdb=# SELECT sqrt(2.0); sqrt ------------------- 1.414213562373095 (1 row) |

此函数在GUC参数gs_format_behavior_compat_options值为'sqrt_karatsuba'时会使用Karatsuba sqrt平方根算法计算,否则使用牛顿迭代算法计算。Karatsuba sqrt平方根算法的性能更快,在极少数场景下精度和牛顿迭代算法有差别。
tan(x)
描述:正切。
返回值类型:double precision
示例:
1 2 3 4 5 |
gaussdb=# SELECT tan(20); tan ------------------ 2.23716094422474 (1 row) |
tanh(x)
描述:双曲正切。
返回值类型:与输入相同(double precision或者numeric类型)。
示例:
1 2 3 4 5 |
gaussdb=# SELECT tanh(0.1); tanh ------------------------------------------ 0.0996679946249558171183050836783521835389 (1 row) |

此函数在A兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下有效。
trunc(x)
描述:截断(取整数部分)。
返回值类型:与输入相同。
示例:
1 2 3 4 5 |
gaussdb=# SELECT trunc(42.8); trunc ------- 42 (1 row) |
trunc(v numeric, s int)
描述:截断为s位小数。
返回值类型:numeric
示例:
1 2 3 4 5 |
gaussdb=# SELECT trunc(42.4382, 2); trunc ------- 42.43 (1 row) |

A兼容模式下,参数a_format_version值为10c和a_format_dev_version值为s1时,参数s若入参为小数则不会被四舍五入,而是被截断。
smgrne(a smgr, b smgr)
描述:比较两个smgr类型整数是否不相等。
返回值类型:boolean
smgreq(a smgr, b smgr)
描述:比较两个smgr类型整数是否相等。
返回值类型:boolean
int1abs(tinyint)
描述:返回uint8类型数据的绝对值。
参数:tinyint
返回值类型:tinyint
int1and(tinyint, tinyint)
描述:返回两个uint8类型数据按位与的结果。
参数:tinyint, tinyint
返回值类型:tinyint
int1cmp(tinyint, tinyint)
描述:返回两个uint8类型数据比较的结果,若第一个参数大,则返回1;若第二个参数大,则返回-1;若相等,则返回0。
参数:tinyint, tinyint
返回值类型:integer
int1div(tinyint, tinyint)
描述:返回两个uint8类型数据相除的结果,结果为float8类型。
参数:tinyint, tinyint
返回值类型:tinyint
int1eq(tinyint, tinyint)
描述:比较两个uint8类型数据是否相等。
参数:tinyint, tinyint
返回值类型:boolean
int1ge(tinyint, tinyint)
描述:判断两个uint8类型数据是否第一个参数大于等于第二个参数。
参数:tinyint, tinyint
返回值类型:boolean
int1gt(tinyint, tinyint)
描述:无符号1字节整数做大于运算。
参数:tinyint, tinyint
返回值类型:boolean
int1larger(tinyint, tinyint)
描述:无符号1字节整数求最大值。
参数:tinyint, tinyint
返回值类型:tinyint
int1le(tinyint, tinyint)
描述:无符号1字节整数做小于等于运算。
参数:tinyint, tinyint
返回值类型:boolean
int1lt(tinyint, tinyint)
描述:无符号1字节整数做小于运算。
参数:tinyint, tinyint
返回值类型:boolean
int1smaller(tinyint, tinyint)
描述:无符号1字节整数求最小算。
参数:tinyint, tinyint
返回值类型:tinyint
int1inc(tinyint)
描述:无符号1字节整数加一。
参数:tinyint
返回值类型:tinyint
int1mi(tinyint, tinyint)
描述:无符号一字节整数做差运算。
参数:tinyint, tinyint
返回值类型:tinyint
int1mod(tinyint, tinyint)
描述:无符号一字节整数做取余运算。
参数:tinyint, tinyint
返回值类型:tinyint
int1mul(tinyint, tinyint)
描述:无符号一字节整数做乘法运算。
参数:tinyint, tinyint
返回值类型:tinyint
int1ne(tinyint, tinyint)
描述:无符号一字节整数不等于运算。
参数:tinyint, tinyint
返回值类型:boolean
int1pl(tinyint, tinyint)
描述:无符号一字节整数加法。
参数:tinyint, tinyint
返回值类型:tinyint
int1um(tinyint)
描述:无符号一字节数取相反数并返回有符号二字节整数。
参数:tinyint
返回值类型:smallint
int1xor(tinyint, tinyint)
描述:无符号一字节整数异或操作。
参数:tinyint, tinyint
返回值类型:tinyint
cash_div_int1(money, tinyint)
描述:对money类型进行除法运算。
参数:money, tinyint
返回值类型:money
cash_mul_int1(money, tinyint)
描述:对money类型进行乘法运算。
参数:money, tinyint
返回值类型:money
int1not(tinyint)
描述:无符号一字节整数二进制位翻转。
参数:tinyint
返回值类型:tinyint
int1or(tinyint, tinyint)
描述:无符号一字节整数或运算。
参数:tinyint, tinyint
返回值类型:tinyint
int1shl(tinyint, integer)
描述:无符号一字节整数左移指定位数。
参数:tinyint, integer
返回值类型:tinyint
int1shr(tinyint, integer)
描述:无符号一字节整数右移指定位数。
参数:tinyint, integer
返回值类型:tinyint
width_bucket(op numeric, b1 numeric, b2 numeric, count int)
描述:返回一个桶,这个桶是在一个有count个桶,上界为b1下界为b2的等深柱图中operand将被赋予的桶。
返回值类型:int
示例:
1 2 3 4 5 |
gaussdb=# SELECT width_bucket(5.35, 0.024, 10.06, 5); width_bucket -------------- 3 (1 row) |
width_bucket(op dp, b1 dp, b2 dp, count int)
描述:返回一个桶,这个桶是在一个有count个桶,上界为b1下界为b2的等深柱图中operand将被赋予的桶。
返回值类型:int
示例:
1 2 3 4 5 |
gaussdb=# SELECT width_bucket(5.35, 0.024, 10.06, 5); width_bucket -------------- 3 (1 row) |
analyze_tgtype_for_type(n smallint)
描述:用于解析pg_trigger.tgtype,按位解析n,并返回before each row, after each row, before statement, after statement, instead of中的一个。
返回值类型:varchar2(16)
analyze_tgtype_for_event(n smallint)
描述:用于解析pg_trigger.tgtype,按位解析n,并返回insert, update, delete, truncate中的一个或多个。
返回值类型:varchar2(246)
nanvl(n2, n1)
描述:输入两个参数,要求为数字类型或可以被隐式转化为数字类型的非数字类型;若第一个参数n2为NaN,返回n1,否则返回n2。
返回值类型:入参参数中最优先的类型,优先级double precision>float4>numeric。
示例:
gaussdb=# SELECT nanvl('NaN', 1.1);
nanvl
-------
1.1
(1 row)

此函数在A兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下有效。
numeric_eq_text(numeric, text)
描述:判断numeric变量是否等于text变量转为numeric后的值。
返回值类型:boolean
示例:
gaussdb=# SELECT numeric_eq_text(1, '1');
numeric_eq_text
-----------------
t
(1 row)
numeric_ne_text(numeric, text)
描述:判断numeric变量是否不等于text变量转为numeric后的值。
返回值类型:boolean
numeric_gt_text(numeric, text)
描述:判断numeric变量是否大于text变量转为numeric后的值。
返回值类型:boolean
numeric_ge_text(numeric, text)
描述:判断numeric变量是否大于等于text变量转为numeric后的值。
返回值类型:boolean
numeric_lt_text(numeric, text)
描述:判断numeric变量是否小于text变量转为numeric后的值。
返回值类型:boolean
numeric_le_text(numeric, text)
描述:判断numeric变量是否小于等于text变量转为numeric后的值。
返回值类型:boolean
text_eq_numeric(text, numeric)
描述:判断text变量转为numeric后的值是否等于numeric变量。
返回值类型:boolean
示例:
gaussdb=# SELECT text_eq_numeric('1', 1);
text_eq_numeric
-----------------
t
(1 row)
text_ne_numeric(text, numeric)
描述:判断text变量转为numeric后的值是否不等于numeric变量。
返回值类型:boolean
text_gt_numeric(text, numeric)
描述:判断text变量转为numeric后的值是否大于numeric变量。
返回值类型:boolean
text_ge_numeric(text, numeric)
描述:判断text变量转为numeric后的值是否大于等于numeric变量。
返回值类型:boolean
text_lt_numeric(text, numeric)
描述:判断text变量转为numeric后的值是否小于numeric变量。
返回值类型:boolean
text_le_numeric(text, numeric)
描述:判断text变量转为numeric后的值是否小于等于numeric变量。
返回值类型:boolean
bigint_eq_text(bigint, text)
描述:判断bigint变量是否等于text变量转为bigint后的值
返回值类型:boolean
gaussdb=# SELECT bigint_eq_text(1, '1');
bigint_eq_text
----------------
t
(1 row)
bigint_ne_text(bigint, text)
描述:判断bigint变量是否不等于text变量转为bigint后的值。
返回值类型:boolean
bigint_gt_text(bigint, text)
描述:判断bigint变量是否大于text变量转为bigint后的值。
返回值类型:boolean
bigint_ge_text(bigint, text)
描述:判断bigint变量是否大于等于text变量转为bigint后的值。
返回值类型:boolean
bigint_lt_text(bigint, text)
描述:判断bigint变量是否小于text变量转为bigint后的值。
返回值类型:boolean
bigint_le_text(bigint, text)
描述:判断bigint变量是否小于等于text变量转为bigint后的值。
返回值类型:boolean
text_eq_bigint(text, bigint)
描述:判断text变量转为bigint后的值是否等于bigint变量。
返回值类型:boolean
示例:
gaussdb=# SELECT text_eq_bigint('1', 1);
text_eq_bigint
----------------
t
(1 row)
text_ne_bigint(text, bigint)
描述:判断text变量转为bigint后的值是否不等于bigint变量。
返回值类型:boolean
text_gt_bigint(text, bigint)
描述:判断text变量转为bigint后的值是否大于bigint变量。
返回值类型:boolean
text_ge_bigint(text, bigint)
描述:判断text变量转为bigint后的值是否大于等于bigint变量。
返回值类型:boolean
text_lt_bigint(text, bigint)
描述:判断text变量转为bigint后的值是否小于bigint变量。
返回值类型:boolean
text_le_bigint(text, bigint)
描述:判断text变量转为bigint后的值是否小于等于bigint变量。
返回值类型:boolean