LPAD en SQL Server, rellenando por la izquierda

3 06 2008

Me habia surgido la duda de como implementar la funcion LPAD de oracle, esa función que permite agregar caracteres comodines sobre un campo consultado.

Bueno lo que realmente hice no implica propiamente una implementación de esa función, sino mas bien como salir del paso y obtener el valor deseado. Tenía un campo númerico al que necesitaba devolverlo como una cadena de caracteres, el campo podia contener hasta dos dígitos, por tanto, si era de un solo digito anteponer el número 0, de tal modo que quede así:

01
02
03

09
10
11

99

La solución que encontré, buscando en la ayuda de SQLServer, SQL Server Books Online, fue usar RIGHT como sigue:

SELECT right( '00' + cast( 8 AS varchar(2)), 2 )

Que lo que hace es:

  1. Convertir el número a una cadena de caracteres y luego,
  2. Concatenarle la cadena de ‘00‘ para después,
  3. Obtener sólo la cantidad de caracteres que necesitamos, en nuestro caso 2.

Y eso es todo…

Dudas y Comentarios, un poco mas abajo.


Acciones

Información

15 respuestas

22 12 2008
Jesus

Excelente muchas gracias.

3 08 2009
excelente

resulta perfect

8 09 2010
edwars

no pasa nada, no funca para todo !!!!!….

22 09 2010
Alexis

Justo estaba buscando esto!
Thxs!

8 11 2010
ARTUROPOCASANGRE

exelente.. esto ha resuelto mi problema!!
a que numero de cuenta puedo depositar los dolares que me he ganado con esta solucion__?? jeje

11 11 2010
MCL

Excelente, funciona perfecto

5 01 2011
Natalia

Hola
Una duda, en que parte defino el nombre del campo

Gracias

5 01 2011
Natalia

Ya lo descubri.

Muchas gracias, justo lo que necesitaba

17 02 2011
jesus

excelente, siempre es bueno encontrar este tipo de informacion gracias a gente como ustedes. saludos

20 06 2011
WILDER

GRACIAS JUSTO LO QUE NECESITABA!

15 09 2011
Alejandro Basurto

It works perfect with a fix and explanation:

For instance, I wanted to get a field and pad it with 5 zeros.

SELECT right( ’00000′ + cast( fieldToPad AS varchar(5)), 5 )

There you go…

7 12 2011
Davis

Exelente Perfecto adjunto como me quedo este fumada jeje..

Select cl.nombre_corto,o.responsable,*,CAST( cast(year(fecha_docto) as Varchar(4)) + ” + right( ’00′ + cast( cast(m.mes as Varchar(2)) AS varchar(2)), 2 ) as int) as Fecha, mes_nombre + ‘ ‘ + cast(year(fecha_docto) as varchar(4)) as aqui

Gracias.. :-)

23 02 2012
Alby Cervantes

Gracias,

6 03 2012
rodolfo

Hola, y en este caso como se haria?
Tengo un campo que maneja numeros del 1 al 1000 por desirlo asi
y al hacer la consulta quiero agregar a los primeros nueve nadamas un cero a la izquierda sin que afecte alos demas..

01
02
03..
99
100
101…
1000
1001

23 03 2012
Blogger

Se me ocurre, hacer uso del CASE, y dentro de la condicion WHEN determinar con LEN la longitud del campo, en caso de tener un digito, hacer el LPAD (lo que menciono en el post) de otro modo, solo pasar el campo directo.

1Saludo

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s




Seguir

Get every new post delivered to your Inbox.