Formateo numérico.

26/09/2005 - 10:56 por Salvador Ramos | Informe spam
Hola a todos,

Tengo que generar un fichero de texto a partir de datos de mi base de datos
en un formato de longitud fija de columnas, alineando los números a la
derecha y siempre con dos decimales. El problema lo tengo al formatear un
campo numérico añadiendo blancos por la izquierda y comprobando que siempre
lleva 2 decimales (si no hay valor deben tener ceros por la derecha). Hasta
ahora tengo resuelto cómo añadir los blancos por la izquierda, pero no los 0
por la derecha.
Os paso un ejemplo, en el que la primera línea es correcta y la segunda y
tercera no para los números 69.55, 96.3 y 68 (sólo funciona correctamente
cuando el número ya tiene 2 decimales):
AD 69.55
AD 96.3 (incorrecta, debería llevar un blanco menos por la izquierda y
poner 96.30)
AD 68 (incorrecta, debería llevar 3 blancos menos por la izquierda y
poner 68.00

Me podéis echar una mano a confeccionar esta conversión ?
Tengo una solución pero es utilizando varias UDF's de terceros para el
manejo de strings que prefiero no utilizar si tengo otra solución más
sencilla.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

Preguntas similare

Leer las respuestas

#1 Maxi
26/09/2005 - 13:57 | Informe spam
Hola Salva, una pregunta: has intentando multiplicar todos los valores por
1.00?


Salu2
Maxi


"Salvador Ramos" escribió en el
mensaje news:
Hola a todos,

Tengo que generar un fichero de texto a partir de datos de mi base de
datos en un formato de longitud fija de columnas, alineando los números a
la derecha y siempre con dos decimales. El problema lo tengo al formatear
un campo numérico añadiendo blancos por la izquierda y comprobando que
siempre lleva 2 decimales (si no hay valor deben tener ceros por la
derecha). Hasta ahora tengo resuelto cómo añadir los blancos por la
izquierda, pero no los 0 por la derecha.
Os paso un ejemplo, en el que la primera línea es correcta y la segunda y
tercera no para los números 69.55, 96.3 y 68 (sólo funciona correctamente
cuando el número ya tiene 2 decimales):
AD 69.55
AD 96.3 (incorrecta, debería llevar un blanco menos por la izquierda
y poner 96.30)
AD 68 (incorrecta, debería llevar 3 blancos menos por la izquierda
y poner 68.00

Me podéis echar una mano a confeccionar esta conversión ?
Tengo una solución pero es utilizando varias UDF's de terceros para el
manejo de strings que prefiero no utilizar si tengo otra solución más
sencilla.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)


Respuesta Responder a este mensaje
#2 Alejandro Mesa
26/09/2005 - 15:00 | Informe spam
Salvador,

Usa la funcion STR().

Ejemplo:

select
str(c1, 8, 2)
from
(
select 69.55
union all
select 96.3
union all
select 68
) as t1(c1)
go


AMB

"Salvador Ramos" wrote:

Hola a todos,

Tengo que generar un fichero de texto a partir de datos de mi base de datos
en un formato de longitud fija de columnas, alineando los números a la
derecha y siempre con dos decimales. El problema lo tengo al formatear un
campo numérico añadiendo blancos por la izquierda y comprobando que siempre
lleva 2 decimales (si no hay valor deben tener ceros por la derecha). Hasta
ahora tengo resuelto cómo añadir los blancos por la izquierda, pero no los 0
por la derecha.
Os paso un ejemplo, en el que la primera línea es correcta y la segunda y
tercera no para los números 69.55, 96.3 y 68 (sólo funciona correctamente
cuando el número ya tiene 2 decimales):
AD 69.55
AD 96.3 (incorrecta, debería llevar un blanco menos por la izquierda y
poner 96.30)
AD 68 (incorrecta, debería llevar 3 blancos menos por la izquierda y
poner 68.00

Me podéis echar una mano a confeccionar esta conversión ?
Tengo una solución pero es utilizando varias UDF's de terceros para el
manejo de strings que prefiero no utilizar si tengo otra solución más
sencilla.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)



Respuesta Responder a este mensaje
#3 Salvador Ramos
26/09/2005 - 19:04 | Informe spam
Gracias Maxi, si que lo había intentado, pero nada. La solución de Alejandro
si que me vale :-)

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Maxi" escribió en el mensaje
news:
Hola Salva, una pregunta: has intentando multiplicar todos los valores por
1.00?


Salu2
Maxi


"Salvador Ramos" escribió en el
mensaje news:
Hola a todos,

Tengo que generar un fichero de texto a partir de datos de mi base de
datos en un formato de longitud fija de columnas, alineando los números a
la derecha y siempre con dos decimales. El problema lo tengo al formatear
un campo numérico añadiendo blancos por la izquierda y comprobando que
siempre lleva 2 decimales (si no hay valor deben tener ceros por la
derecha). Hasta ahora tengo resuelto cómo añadir los blancos por la
izquierda, pero no los 0 por la derecha.
Os paso un ejemplo, en el que la primera línea es correcta y la segunda y
tercera no para los números 69.55, 96.3 y 68 (sólo funciona correctamente
cuando el número ya tiene 2 decimales):
AD 69.55
AD 96.3 (incorrecta, debería llevar un blanco menos por la
izquierda y poner 96.30)
AD 68 (incorrecta, debería llevar 3 blancos menos por la
izquierda y poner 68.00

Me podéis echar una mano a confeccionar esta conversión ?
Tengo una solución pero es utilizando varias UDF's de terceros para el
manejo de strings que prefiero no utilizar si tengo otra solución más
sencilla.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)






Respuesta Responder a este mensaje
#4 Salvador Ramos
26/09/2005 - 19:06 | Informe spam
Muchas gracias Alejandro,

Me había montado un cacao con una anidación de funciones super larga, y ni
había caído en el uso de STR, la verdad que no suelo utilizar esta función,
pero no se me volverá a olvidar :-)

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Alejandro Mesa" escribió en el
mensaje news:
Salvador,

Usa la funcion STR().

Ejemplo:

select
str(c1, 8, 2)
from
(
select 69.55
union all
select 96.3
union all
select 68
) as t1(c1)
go


AMB

"Salvador Ramos" wrote:

Hola a todos,

Tengo que generar un fichero de texto a partir de datos de mi base de
datos
en un formato de longitud fija de columnas, alineando los números a la
derecha y siempre con dos decimales. El problema lo tengo al formatear un
campo numérico añadiendo blancos por la izquierda y comprobando que
siempre
lleva 2 decimales (si no hay valor deben tener ceros por la derecha).
Hasta
ahora tengo resuelto cómo añadir los blancos por la izquierda, pero no
los 0
por la derecha.
Os paso un ejemplo, en el que la primera línea es correcta y la segunda y
tercera no para los números 69.55, 96.3 y 68 (sólo funciona correctamente
cuando el número ya tiene 2 decimales):
AD 69.55
AD 96.3 (incorrecta, debería llevar un blanco menos por la
izquierda y
poner 96.30)
AD 68 (incorrecta, debería llevar 3 blancos menos por la
izquierda y
poner 68.00

Me podéis echar una mano a confeccionar esta conversión ?
Tengo una solución pero es utilizando varias UDF's de terceros para el
manejo de strings que prefiero no utilizar si tengo otra solución más
sencilla.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida