Cómo añadir ceros a la izquierda a un número en SQL Server

Esteban Sierra

2 junio, 2023

En el trabajo diario con bases de datos, muchas veces necesitamos que ciertos números tengan siempre la misma longitud. Esto ocurre, por ejemplo, con códigos de productos, identificadores de cliente, números de factura o cualquier campo que deba mostrarse con un formato fijo.

En SQL Server existen varias formas de lograrlo, siendo una de las más comunes añadir ceros a la izquierda de un número hasta completar la longitud deseada. En este artículo te mostraré cómo hacerlo paso a paso, con ejemplos prácticos, buenas prácticas y alternativas que puedes aplicar según tu caso.

¿Por qué añadir ceros a la izquierda en SQL Server?

Aunque a primera vista pueda parecer un simple detalle estético, dar formato uniforme a los datos tiene varias ventajas:

  • Consistencia visual: todos los códigos tienen la misma longitud, lo que facilita la lectura.
  • Comparaciones correctas: cuando se comparan valores en informes o exportaciones, el formato uniforme evita confusiones.
  • Compatibilidad: algunos sistemas externos requieren datos en formato fijo, especialmente en integraciones o intercambios de información.

Un caso típico es cuando trabajamos con códigos de 6 dígitos: el número 123 debe convertirse en 000123.

Método más usado: CAST/CONVERT + RIGHT

La forma más extendida de formatear números con ceros a la izquierda en SQL Server combina las funciones CAST (o CONVERT), RIGHT y REPLICATE.

  • CAST/CONVERT: convierten un número a cadena (VARCHAR).
  • REPLICATE: repite un carácter tantas veces como se indique (en este caso, el “0”).
  • RIGHT: extrae un número fijo de caracteres por la derecha.

De esta manera, siempre obtenemos una cadena de longitud fija.

Ejemplo práctico en SQL Server

Imaginemos una tabla Productos con una columna Codigo. Queremos que todos los códigos tengan una longitud de 6 caracteres. Si un valor es 321, debería mostrarse como 000321.

SELECT 
    RIGHT(REPLICATE('0', 6) + CAST(Codigo AS VARCHAR(6)), 6) AS Codigo_Formateado
FROM Productos;

Explicación paso a paso:

  1. CAST(Codigo AS VARCHAR(6)) convierte el número en texto.
  2. REPLICATE('0', 6) genera una cadena de seis ceros (000000).
  3. Concatenamos los ceros con el número convertido.
  4. RIGHT(..., 6) toma siempre los últimos 6 caracteres, asegurando el formato deseado.

El resultado será uniforme: 000123, 001245, 123456, etc.

Variaciones y alternativas

Usar FORMAT (SQL Server 2012+)

Si utilizas SQL Server 2012 o posterior, puedes aprovechar la función FORMAT, mucho más legible:

SELECT FORMAT(Codigo, '000000') AS Codigo_Formateado
FROM Productos;

Aquí, el patrón '000000' indica que queremos siempre 6 dígitos.

Usar STR

Otra opción menos conocida es la función STR, aunque requiere más ajustes:

SELECT REPLACE(STR(Codigo, 6, 0), ' ', '0') AS Codigo_Formateado
FROM Productos;

El inconveniente es que STR rellena con espacios en lugar de ceros, por eso usamos REPLACE.

Errores comunes al añadir ceros a la izquierda

  1. No ajustar la longitud correctamente
    Si en el RIGHT usas un número menor que el requerido, perderás información. ❌ Ejemplo: SELECT RIGHT('000000' + CAST(123456 AS VARCHAR(6)), 5); Resultado: 23456 (el 1 se pierde).
  2. Olvidar convertir a VARCHAR
    Concatenar directamente un número con una cadena genera errores de tipo.
  3. Elegir una longitud insuficiente
    Si tu código puede crecer más allá de la longitud definida, el formato se rompe. Siempre prevé el tamaño máximo real.

Buenas prácticas

  • Define la longitud pensando en el caso de uso real (¿necesitas 6, 8, 10 dígitos?).
  • Centraliza el formato en vistas o procedimientos almacenados, para no duplicar lógica.
  • Documenta en tu esquema de base de datos por qué ese campo requiere ceros a la izquierda.

Conclusión

Añadir ceros a la izquierda en SQL Server es una tarea muy común y fácil de resolver.

  • Si necesitas compatibilidad con versiones antiguas, combina CAST/CONVERT, RIGHT y REPLICATE.
  • Si trabajas con SQL Server 2012 o superior, la opción más sencilla y limpia es FORMAT.

Con estas técnicas, podrás mantener la uniformidad en tus datos, evitar errores en informes y mejorar la presentación de tus resultados.

💡 Si lo que necesitas es añadir ceros a la derecha en SQL Server, puedes ver este otro artículo donde explico cómo hacerlo paso a paso.

 
Tu apoyo cuenta: comparte este contenido y cuéntame en los comentarios qué te ha parecido

6 comentarios en «Cómo añadir ceros a la izquierda a un número en SQL Server»

  1. Me ayudo mucho este query, le hice una corrección con trim ya que en mi caso el campo código aunque es numérico lo guardan como varchar y por la longitud se pone espacios a la derecha.

    SELECT right(‘000000’ + rtrim(ltrim(CAST(codigo AS VARCHAR(6)))), 6) AS Codigo_Formateado
    FROM Productos

    Responder

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies