Skip to main content

Arithmetic operators

seekdb supports commonly used arithmetic operators.

Overview of arithmetic operators

The following table describes the arithmetic operators supported in the current version of seekdb.

OperatorOperand TypeDescription
+Unary/BinaryUnary indicates a positive number, and binary indicates addition.
-Unary/BinaryUnary indicates a negative number, and binary indicates subtraction.
*BinaryMultiplication.
/BinaryDivision.
DIVBinaryInteger division, which returns the quotient.
MOD or %BinaryInteger division, which returns the remainder. N % M or N MOD M returns the remainder after N is divided by M.

Syntax

Rules for arithmetic operations

The following rules apply to integer division:

  • The quotient is rounded to the nearest integer toward zero.

  • The sign of the remainder is the same as the sign of the dividend.

Here is an example:

SELECT (-7) DIV (3.6), (-7) MOD (3.6);
+----------------+----------------+
| (-7) DIV (3.6) | (-7) MOD (3.6) |
+----------------+----------------+
| -1 | -3.4 |
+----------------+----------------+
1 row in set (0.001 sec)

SELECT (-7) DIV (-3.4), (-7) % (-3.4);
+-----------------+---------------+
| (-7) DIV (-3.4) | (-7) % (-3.4) |
+-----------------+---------------+
| 2 | -0.2 |
+-----------------+---------------+
1 row in set (0.001 sec)

Results of arithmetic operations

The result of an arithmetic operation is determined based on the following rules:

  • For the operators -, +, and *, if both operands are integers, the result is calculated with BIGINT (64-bit) precision.

  • If both operands are integers and one of them is an unsigned integer, the result is an unsigned integer. However, if the NO_UNSIGNED_SUBTRACTION SQL mode is enabled, the result of a subtraction operation is signed even if one of the operands is an unsigned integer.

  • If the operands of +, -, /, *, or % are real numbers or string values, the result has the precision of the operand with the highest precision.

  • When you use the / operator to divide two exact-value operands, the number of decimal places in the result is the number of decimal places in the first operand plus the value of the div_precision_increment system variable (default value is 4). For example, the expression 5.15/0.013 has six decimal places (396.153846).