PostgreSQL
9.3. Mathematical Functions and Operators
Mathematical operators are provided for many PostgreSQL types. For types without standard mathematical conventions (e.g., date/time types) we describe the actual behavior in subsequent sections.
Table 9.4 shows the available mathematical operators.
Table 9.4. Mathematical Operators
Operator | Description | Example | Result |
---|---|---|---|
|
addition |
|
|
|
subtraction |
|
|
|
multiplication |
|
|
|
division (integer division truncates the result) |
|
|
|
modulo (remainder) |
|
|
|
exponentiation (associates left to right) |
|
|
`+ |
/+` |
square root |
`+ |
/ 25.0+` |
|
`+ |
|
/+` |
cube root |
`+ |
|
/ 27.0+` |
|
|
factorial (deprecated, use |
|
|
|
factorial as a prefix operator (deprecated, use |
|
|
|
absolute value |
|
|
|
bitwise AND |
|
|
`+ |
+` |
bitwise OR |
`+32 |
3+` |
|
|
bitwise XOR |
|
|
|
bitwise NOT |
|
|
|
bitwise shift left |
|
|
|
bitwise shift right |
|
|
+
The bitwise operators work only on integral data types and are also available for the bit string types bit
and bit varying
, as shown in Table 9.13.
Table 9.5 shows the available mathematical functions. In the table, dp
indicates double precision
. Many of these functions are provided in multiple forms with different argument types. Except where noted, any given form of a function returns the same data type as its argument. The functions working with double precision
data are mostly implemented on top of the host system’s C library; accuracy and behavior in boundary cases can therefore vary depending on the host system.
Table 9.5. Mathematical Functions
Function | Return Type | Description | Example | Result |
---|---|---|---|---|
|
(same as input) |
absolute value |
|
|
|
|
cube root |
|
|
|
(same as input) |
nearest integer greater than or equal to argument |
|
|
|
(same as input) |
nearest integer greater than or equal to argument (same as |
|
|
|
|
radians to degrees |
|
|
|
|
integer quotient of `y |
|
|
|
(same as input) |
exponential |
|
|
|
|
factorial |
|
|
|
(same as input) |
nearest integer less than or equal to argument |
|
|
|
(same as input) |
natural logarithm |
|
|
|
(same as input) |
base 10 logarithm |
|
|
|
|
logarithm to base `b` |
|
|
|
(same as argument types) |
remainder of `y |
|
|
|
|
“[.quote]#π”# constant |
|
|
|
|
`a |
|
|
|
|
`a |
|
|
|
|
degrees to radians |
|
|
|
(same as input) |
round to nearest integer |
|
|
|
|
round to `s` decimal places |
|
|
|
|
scale of the argument (the number of decimal digits in the fractional part) |
|
|
|
(same as input) |
sign of the argument (-1, 0, +1) |
|
|
|
(same as input) |
square root |
|
|
|
(same as input) |
truncate toward zero |
|
|
|
|
truncate to `s` decimal places |
|
|
|
|
return the bucket number to which `operand |
|
|
|
|
return the bucket number to which `operand |
|
|
|
|
return the bucket number to which `operand |
|
|
+
Table 9.6 shows functions for generating random numbers.
Table 9.6. Random Functions
Function | Return Type | Description |
---|---|---|
|
|
random value in the range 0.0 ⇐ x < 1.0 |
|
|
set seed for subsequent |
+
The characteristics of the values returned by random()
depend on the system implementation. It is not suitable for cryptographic applications; see pgcrypto module for an alternative.
Finally, Table 9.7 shows the available trigonometric functions. All trigonometric functions take arguments and return values of type double precision
. Each of the trigonometric functions comes in two variants, one that measures angles in radians and one that measures angles in degrees.
Table 9.7. Trigonometric Functions
Function (radians) | Function (degrees) | Description |
---|---|---|
|
|
inverse cosine |
|
|
inverse sine |
|
|
inverse tangent |
|
|
inverse tangent of `y |
|
|
cosine |
|
|
cotangent |
|
|
sine |
|
|
tangent |
+
Note
Another way to work with angles measured in degrees is to use the unit transformation functions radians()
and degrees()
shown earlier. However, using the degree-based trigonometric functions is preferred, as that way avoids round-off error for special cases such as sind(30)
.
Prev | Up | Next |
---|---|---|
9.2. Comparison Functions and Operators |
9.4. String Functions and Operators |
Copyright © 1996-2023 The PostgreSQL Global Development Group