Mathematical Functions and Operators

Mathematical operators are provided for many PostgreSQL types. For types without common mathematical conventions for all possible permutations (such as date/time types), we describe the actual behavior in subsequent sections.

Table 3-2. Mathematical Operators

NameDescriptionExampleResult
+ Addition2 + 35
- Subtraction2 - 3-1
* Multiplication2 * 36
/ Division (integer division truncates results)4 / 22
% Modulo (remainder)5 % 41
^ Exponentiation2.0 ^ 3.08.0
|/ Square root|/ 25.05.0
||/ Cubic root||/ 27.03
! Factorial5 !120
!! Factorial (prefix operator)!! 5120
@ Absolute value@ -5.05.0
& Binary AND91 & 1511
| Binary OR32 | 335
# Binary XOR17 # 520
~ Binary NOT~1-2
<< Binary shift left1 << 416
>> Binary shift right8 >> 22

The "binary" operators are also available for the bit string types BIT and BIT VARYING.

Table 3-3. Bit String Binary Operators

ExampleResult
B'10001' & B'01101'00001
B'10001' | B'01101'11101
B'10001' # B'01101'11110
~ B'10001'01110
B'10001' << 301000
B'10001' >> 200100
Bit string arguments to &, |, and # must be of equal length. When bit shifting, the original length of the string is preserved, as shown here.

Table 3-4. Mathematical Functions

FunctionReturn TypeDescriptionExampleResult
abs(x)(same as argument type)absolute valueabs(-17.4)17.4
cbrt(double precision)double precisioncube rootcbrt(27.0)3.0
ceil(numeric)numericsmallest integer not less than argumentceil(-42.8)-42
degrees(double precision)double precisionconvert radians to degreesdegrees(0.5)28.6478897565412
exp(double precision)double precisionexponential functionexp(1.0)2.71828182845905
floor(numeric)numericlargest integer not greater than argumentfloor(-42.8)-43
ln (dp)dpnatural logarithmln(2.0)0.693147180559945
log (dp)dpbase 10 logarithmlog(100.0)2
log (b numeric, x numeric)numericlogarithm to base blog(2.0, 64.0)6.0000000000
mod (y, x)(same as argument types)remainder of y/xmod(9,4)1
pi ()dp"Pi" constantpi()3.14159265358979
pow (e dp, n dp)dpraise a number to exponent epow(9.0, 3.0)729
radians (dp)dpdegrees to radiansradians(45.0)0.785398163397448
random ()dpvalue between 0.0 to 1.0random() 
round (dp)dpround to nearest integerround(42.4)42
round (v numeric, s integer)numericround to s decimal placesround(42.4382, 2)42.44
sign (numeric)numericsign of the argument (-1, 0, +1)sign(-8.4)-1
sqrt (dp)dpsquare rootsqrt(2.0)1.4142135623731
trunc (dp)dptruncate toward zerotrunc(42.8)42
trunc(numeric, s integer)numerictruncate to s decimal placestrunc(42.4382, 2)42.43

In the table above:

Many of these functions are implemented on top of the host system's C library and behavior in boundary cases could therefore vary depending on the operating system.

Table 3-5. Trigonometric Functions

FunctionDescription
acos (x)inverse cosine
asin (x)inverse sine
atan (x)inverse tangent
atan2 (x, y)inverse tangent of y/x
cos (x)cosine
cot (x)cotangent
sin (x)sine
tan (x)tangent

All trigonometric functions have arguments and return values of type double precision.