Principales respuestas
dar formato miles y 2 decimales a un campo numerico

Pregunta
-
Hola amigos,
tengo mi BD SQL 2008 R2 tengo mi tabla pagos que tiene el campo Importe de tipo double, quisiera que al realizar la consulta se muestre con separacion es miles, y dos decimales. asimismo si el valor llega a millones que tambien lo separe:
500.33
1,500.33
2,331,500.33
como realizo dicho formato?
Respuestas
-
Como recomendación, no es correcto dar formato a un valor numérico desde una consulta de selección porque el valor llega al cliente convertido en un tipo cadena, nota que tanto la función CONVERT() como FORMAT() retornan un valor -formateado- de tipo varchar().
Lo que te aconsejo es que la consulta de selección recupere y envíe el valor conservando el tipo numérico (por cierto, quizá debas elegir el tipo decimal (p, s) frente al tipo double) y en la UI (interfaz de la aplicación) te encargues de aplicar el formato que consideres oportuno:
//En caso recuperes un valor escalar double Importe = 2331500.33; string valorFormateado = Importe.ToString("#,##0.00"); //Resultado: 2,331,500.33 //En caso cargues una columna de un contenedor de datos con dicho valor: dataGridView1.DataSource = dt; //dt: Objeto de tipo DataTable dataGridView1.Columns["Importe"].DefaultCellStyle.Format = "#,##0.00"; //Resultado: 2,331,500.33
La forma que muestro -de aplicar formato a un valor numérico- es una de varias, considera que el caracter mostrado como separador decimal y/o separador de unidades varía según la configuración regional establecida en el equipo cliente, sin embargo puedes establecer una configuración fija en base a una cultura especifica.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Propuesto como respuesta Laura CeglzModerator viernes, 2 de septiembre de 2016 16:03
- Marcado como respuesta Laura CeglzModerator viernes, 16 de septiembre de 2016 17:59
Todas las respuestas
-
Si usas SQL Server 2008 podrías tratar así:
SELECT CONVERT(VARCHAR, CAST(2331500.33 AS MONEY), 1)
De usar una versión superior prueba FORMAT.
Saludos,
Ayacucho - Perú
Recuerda si mi solución atiende tu consulta por favor márcala como útil y como respuesta.
http://litigiouslobo.blogspot.com/
El Blog de Steve Morrison -
-
Como recomendación, no es correcto dar formato a un valor numérico desde una consulta de selección porque el valor llega al cliente convertido en un tipo cadena, nota que tanto la función CONVERT() como FORMAT() retornan un valor -formateado- de tipo varchar().
Lo que te aconsejo es que la consulta de selección recupere y envíe el valor conservando el tipo numérico (por cierto, quizá debas elegir el tipo decimal (p, s) frente al tipo double) y en la UI (interfaz de la aplicación) te encargues de aplicar el formato que consideres oportuno:
//En caso recuperes un valor escalar double Importe = 2331500.33; string valorFormateado = Importe.ToString("#,##0.00"); //Resultado: 2,331,500.33 //En caso cargues una columna de un contenedor de datos con dicho valor: dataGridView1.DataSource = dt; //dt: Objeto de tipo DataTable dataGridView1.Columns["Importe"].DefaultCellStyle.Format = "#,##0.00"; //Resultado: 2,331,500.33
La forma que muestro -de aplicar formato a un valor numérico- es una de varias, considera que el caracter mostrado como separador decimal y/o separador de unidades varía según la configuración regional establecida en el equipo cliente, sin embargo puedes establecer una configuración fija en base a una cultura especifica.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Propuesto como respuesta Laura CeglzModerator viernes, 2 de septiembre de 2016 16:03
- Marcado como respuesta Laura CeglzModerator viernes, 16 de septiembre de 2016 17:59