Númerosestándar SQL

MOD

Devuelve el resto de dividir un número entre otro.

Sintaxis

MOD(<dividendo>, <divisor>)
<dividendo> % <divisor>

MOD(10, 3) da 1, porque 10 = 3 · 3 + 1. El operador % hace lo mismo. Lo más habitual es usarla para comprobar si un número es par, tomar una de cada dos filas o repartir filas por turnos en varios grupos.

Datos para los ejemplos

orders

idcreated_atamount
12026-07-03 10:15:00120.50
22026-07-28 18:40:0080.25
32026-08-09 09:05:00199.99
42026-08-21 14:30:0045.00
52026-09-02 11:00:0064.75

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

El resto de una división
SELECT MOD(10, 3) AS remainder,
10 % 3 AS with_operator;
remainderwith_operator
11
Números de pedido pares
SELECT id,
MOD(id, 2) = 0 AS is_even
FROM orders;
idis_even
1false
2true
3false
4true
5false
Uno de cada dos pedidos
SELECT id, amount
FROM orders
WHERE MOD(id, 2) = 0;
idamount
280.25
445.00

Ten en cuenta

Con un dividendo negativo, el resto también es negativo: MOD(-7, 3) da -1, no 2. Si siempre lo necesitas no negativo, usa MOD(MOD(-7, 3) + 3, 3).

Dividir entre cero es un error: MOD(5, 0) dice division by zero.

También funciona con números decimales: MOD(7.5, 2) da 1.5.

Funciones relacionadas