Skip to main content
Documents
Basic SyntaxMath FunctionsDate FunctionsJSON FunctionsDatabasesTables & Schema ManagementString FunctionsTriggersIndexes

PostgreSQL %

In PostgreSQL, the `%` operator is a mathematical function used to calculate the remainder of the division of two numbers. It is commonly known as the modulo operator and is essential for operations that require a determination of divisibility or cyclic behavior.

Usage

The `%` operator is used when you need to find the remainder after dividing one number by another, which is useful in various arithmetic calculations, including determining evenness or oddness. It is often employed in scenarios involving cyclic sequences or iterations.

SELECT dividend % divisor;

In this syntax, `dividend % divisor` returns the remainder of the division of `dividend` by `divisor`.

Examples

1. Basic Modulo Operation

SELECT 10 % 3;

This example computes the remainder when 10 is divided by 3, which results in `1`.

2. Checking Even or Odd

SELECT CASE WHEN 15 % 2 = 0 THEN 'Even' ELSE 'Odd' END;

This example uses the modulo operator to determine if the number `15` is even or odd, outputting `Odd`.

3. Using Modulo in a Table Query

SELECT id, name
FROM employees
WHERE id % 5 = 0;

Here, the query selects `id` and `name` from the `employees` table where the `id` is divisible by 5, showcasing the use of `%` in practical database queries.

4. Modulo with Negative Numbers

SELECT -10 % 3;

This example shows how the modulo operator behaves with negative numbers. In PostgreSQL, the result is `-1`, as the sign of the result matches the dividend.

Tips and Best Practices

  • Use for divisibility checks. The `%` operator is ideal for checking if a number is divisible by another (e.g., checking for even numbers with `% 2`).
  • Optimize for large datasets. When using `%` in conditions, ensure your database is indexed appropriately to maintain query performance.
  • Ensure divisor is non-zero. Avoid using zero as the divisor to prevent division errors or exceptions.
  • Utilize in loops and cycles. The `%` operator is helpful in cyclic operations, such as resetting counters or indexes.
  • Data type compatibility. The `%` operator can be used with both integer and floating-point numbers, but be aware of the data type of the result, which follows the rules of arithmetic expressions in PostgreSQL.
  • Version considerations. The behavior of the `%` operator is consistent across PostgreSQL versions, but always verify against your version's documentation for any nuanced behavior changes.