Añadir ceros a la izquierda en SQL Server (con ejemplos)

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

LLa forma más extendida de añadir ceros a la izquierda en SQL Server combina las funciones:

  • CAST / CONVERT: convierten el número a texto.
  • REPLICATE: genera una cadena de ceros.
  • RIGHT: obtiene una longitud fija por la derecha.

Gracias a esta combinación, el resultado siempre tendrá el número de caracteres deseado.

Ejemplo práctico en SQL Server

Supongamos una tabla llamada Productos con una columna Codigo. Queremos que todos los códigos tengan una longitud de 6 caracteres, rellenando con ceros a la izquierda cuando sea necesario.

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

Explicación paso a paso:

  • CAST(Codigo AS VARCHAR(6)) convierte el número en texto.
  • REPLICATE(‘0’, 6) genera la cadena 000000.
  • Se concatenan los ceros con el número convertido.
  • RIGHT(…, 6) asegura que siempre se obtengan los últimos 6 caracteres.

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

Variaciones y alternativas

Usar FORMAT (SQL Server 2012 o superior)

Si trabajas con SQL Server 2012 o versiones posteriores, puedes usar la función FORMAT, que resulta más legible:

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

El patrón ‘000000’ indica que el número debe mostrarse siempre con seis dígitos.

Hay que tener en cuenta que FORMAT es más cómodo de leer, pero puede ser menos eficiente en consultas con grandes volúmenes de datos.

Usar STR

Otra alternativa es la función STR, aunque requiere un ajuste adicional:

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

STR rellena con espacios en lugar de ceros, por lo que es necesario usar REPLACE para sustituirlos.

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 texto
    Concatenar directamente un número con cadenas genera errores de tipo.
  3. Elegir una longitud insuficiente
    Si el código puede crecer en el futuro, el formato dejará de ser válido.

Buenas prácticas

  • Define la longitud teniendo en cuenta el tamaño máximo real del dato.
  • Aplica el formato en vistas o procedimientos almacenados, no directamente en la tabla.
  • Documenta por qué ese campo necesita ceros a la izquierda.
  • Evita usar FORMAT en consultas críticas de rendimiento.

Preguntas frecuentes sobre ceros a la izquierda en SQL Server

¿Añadir ceros a la izquierda cambia el valor del número?

No. El valor sigue siendo numérico internamente. Los ceros se aplican únicamente al convertir el dato a texto para mostrarlo.

¿Qué método es mejor: FORMAT o RIGHT + REPLICATE?

Para consultas pequeñas, FORMAT es más legible. Para grandes volúmenes de datos, RIGHT + REPLICATE suele ofrecer mejor rendimiento.

¿Se pueden añadir ceros a la izquierda en una columna numérica?

No directamente. Los ceros a la izquierda solo tienen sentido cuando el dato se muestra como texto (VARCHAR o CHAR).

Conclusión

Añadir ceros a la izquierda en SQL Server es una tarea muy habitual y sencilla de resolver.

  • Para máxima compatibilidad y rendimiento, utiliza CAST/CONVERT + RIGHT + REPLICATE.
  • Si buscas simplicidad y usas SQL Server 2012 o superior, FORMAT puede ser suficiente.

Aplicando estas técnicas mejorarás la uniformidad de tus datos, evitarás errores en informes y facilitarás la integración con otros sistemas.

Si necesitas añadir ceros a la derecha en SQL Server, puedes consultar este otro artículo donde lo explico paso a paso.

Si necesitas ayuda con bases de datos, optimización de consultas o desarrollo de soluciones en SQL Server, puedes contactar conmigo y te asesoraré sin compromiso.

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

6 comentarios en «Añadir ceros a la izquierda en SQL Server (con ejemplos)»

  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