Referencia técnica independienteSitio oficial
  • Software y sistemas
  • Base de datos

22012

PostgreSQL 22012 en base de datos: división por cero en una consulta

Verificada con fuentes2 fuentesRevisada 3 oct 2026
¿Viene un técnico? Mira los 2 pasos que debe enseñarte
Trace

Evidencia vinculada a esta decisión

Ver fuente: PostgreSQL 18 Appendix A: Error Codes

Nivel de riesgo

Seguro

Puedes actuar sin peligro siguiendo las comprobaciones seguras.

Urgencia

Media — atiéndelo hoy

Respuesta rápida

Una consulta ha intentado dividir entre cero. Revisa el dato que dejaste a cero o vacío; si eres desarrollador, localiza la división y protégela con NULLIF o CASE en lugar de ocultar el error.

Seguridad primero

Antes de continuar

  • No sustituyas el cero por un valor inventado como 1 para que la cuenta salga: el resultado sería falso.

Puedes hacerlo con seguridad

  • Dato introducido
  • Expresión que divide
  • Filas con divisor cero

Deja estas tareas a un profesional cualificado

  • No intentes esta tarea profesional: Protección de la división en la consulta
  • No intentes esta tarea profesional: Corrección de los datos de origen

Lo que un técnico debe poder justificar

Viene un técnico

Estos son los pasos que tiene que hacer y enseñarte. Márcalos mientras trabaja: si se salta pasos, no aceptes el cambio de pieza.

No son instrucciones para que abras o manipules el equipo. Son las comprobaciones que deben sostener una conclusión técnica.

  1. Protección de la división en la consulta

    Qué haceEl desarrollador aplica NULLIF al divisor o una condición CASE WHEN x <> 0, como en el ejemplo de la documentación.

    Te tiene que enseñarla sentencia antes y después.

    Por escritoqué valor devuelve ahora cuando el divisor es cero.

  2. Corrección de los datos de origen

    Qué haceSi el cero es un error, el responsable de datos corrige los registros con un cambio revisado.

    Te tiene que enseñarlas filas afectadas.

    Por escritoel cambio aplicado y quién lo aprobó.

Antes de aceptar una pieza o reparación

Aún no ha demostrado nada. No aceptes un cambio de pieza solo por el código.

Sigue estos pasos

Aviso: Sigue el orden documentado. Un código identifica el sistema afectado, pero por sí solo no demuestra qué pieza está averiada.

  1. Dato introducido

    Sin herramientas especiales

    Quién:
    tú, quien usa la aplicación.
    Cómo:
    revisa si dejaste a cero o vacío un campo como cantidad, unidades o días.
    Resultado que importa:
    si hay un cero que no debería estar.
    Si lo había:
    confírmalo corrigiendo el dato; el informe debería calcularse.
    Si los datos son correctos:
    indica un fallo de la consulta; avisa al soporte.
    Evidencia a conservar:
    captura de la pantalla y del mensaje con la hora.

    Evidencia: PostgreSQL 18 Appendix A: Error Codes

  2. Expresión que divide

    Sin herramientas especiales

    Quién:
    tú, como desarrollador.
    Cómo:
    usa Position y Where del error para localizar la división en la sentencia o en la función.
    Resultado que importa:
    qué columna o expresión actúa como divisor.
    Si el divisor es una columna:
    confirma que algunos registros valen cero; pasa a buscarlos.
    Si es una constante:
    apunta al caso de 1/0 evaluado al planificar.
    Evidencia a conservar:
    sentencia y posición indicada.

    Evidencia: PostgreSQL error and notice fields · PostgreSQL 18 conditional expressions

  3. Filas con divisor cero

    Sin herramientas especiales

    Quién:
    tú, como desarrollador, con acceso de solo lectura.
    Cómo:
    consulta cuántas filas tienen el divisor a cero.
    Resultado que importa:
    si el cero es un dato válido o un error de carga.
    Si el cero es válido:
    indica que la consulta debe tratarlo, por ejemplo con NULLIF o CASE WHEN x <> 0.
    Si es un error de carga:
    confirma que hay que corregir el dato en origen.
    Evidencia a conservar:
    número de filas y ejemplos de identificadores.

    Evidencia: PostgreSQL 18 Appendix A: Error Codes · PostgreSQL 18 conditional expressions

Situación no resuelta

Si el error persiste, no sigas probando por tu cuenta. Mira qué tiene que hacer y enseñarte el técnico.

Técnico virtual

¿Sigue apareciendo 22012 tras comprobarlo?

Este recorrido usa el código exacto y tus respuestas para elegir una prueba, su resultado esperado y la siguiente bifurcación.

Dónde se aplica este código

Un código solo tiene significado dentro del producto y la versión correctos.

Ámbito principal

Sistema
Software y sistemas
Marca
PostgreSQL
Tipo de producto
Base de datos

Variantes conocidas del código

  • division_by_zero
  • PostgreSQL 22012
  • SQLSTATE 22012

Qué significa

El apéndice A asigna 22012 a division_by_zero, en la clase 22 Data Exception. Aparece cuando una expresión con el operador / u otra operación de división recibe un divisor igual a cero. El campo Position o Where del error indica la expresión. La documentación de expresiones condicionales recuerda que CASE no siempre evita evaluar una subexpresión: una constante 1/0 puede fallar al planificar aunque esté en una rama que no se ejecuta. El código señala el dato o la consulta, no un fallo del servidor.

Advertencias y condiciones de parada

  • Seguroadvertencia editorial

    No sustituyas el cero por un valor inventado como 1 para que la cuenta salga: el resultado sería falso.

    Evidencia: PostgreSQL 18 conditional expressions

Síntomas y causas

Causas probables · en orden

  • Divisor a cero en los datosFrecuente

    Un campo usado como divisor vale cero en alguna fila. Se confirma buscando esas filas con una consulta de solo lectura.

    Evidencia: PostgreSQL 18 Appendix A: Error Codes

  • Constante 1/0 dentro de un CASEMenos común

    Falla aunque la rama no se use, porque se evalúa al planificar. Se distingue porque falla incluso sin filas.

    Evidencia: PostgreSQL 18 conditional expressions

Fuentes y referencias técnicas

  1. 1

    PostgreSQL 18 Appendix A: Error Codes

    PostgreSQL Global Development Group · 2026 · official_doc

  2. 2

    PostgreSQL error and notice fields

    PostgreSQL Global Development Group · 2026 · official_doc

Fuentes: PostgreSQL 18 Appendix A: Error Codes · PostgreSQL error and notice fieldsrevisado 2026-10-03 · verificado

¿Te ha resultado útil esta ficha?