Cómo mostrar cantidades de dinero en formato de moneda en SQL Server
Un lector me envió recientemente una pregunta en la que quería saber cómo mostrar cantidades de dinero en el formato comúnmente conocido como moneda. (Soy consciente de lo centrado en una región geográfica que esto es, así que intentaré ser más global en mi respuesta a la pregunta del lector).
Utilicemos la base de datos Northwind como nuestro banco de pruebas. Considera la siguiente consulta SQL:
USE Northwind GO SELECT Quantity, Unitprice, Quantity * UnitPrice AS Amount FROM [Order Details]
Esta consulta devuelve un conjunto de resultados que se ve como Listado A (el cual es una lista abreviada). Esto nos da las respuestas correctas pero no en el formato deseado. Podemos alterar la apariencia de las columnas de dinero, pero hay un costo asociado. Por ejemplo, la instrucción en Listado B nos da lo que queremos (es decir, cantidades con formato de moneda).
El lector también quería saber cómo obtener el símbolo de la moneda antes de la cantidad, por ejemplo, $1,320.00. Dada la declaración revisada en Listado B, esto no es difícil de hacer, como puedes ver aquí:
USE Northwind GO SELECT Quantity, '$' + CONVERT(varchar(12), Unitprice, 1) AS Unitprice, '$' + CONVERT(varchar(12), Quantity * UnitPrice, 1) AS Amount FROM [Order Details]
Listado C muestra cómo esto resulta en la visualización deseada. Debo agregar una advertencia adicional que no es evidente. El estilo 1 solo funciona con los tipos de datos money y smallmoney. Por lo tanto, si alguna vez almacenas tus datos en otro tipo, puedes hacer una doble conversión, así:
CONVERT(varchar, CONVERT(money, TuCampo), 1)
¿Por qué mostrar los valores de dinero en formato de moneda?
Ahora que hemos creado lo que el lector solicitó, es posible que te preguntes: ¿Por qué querrías mostrar los valores de dinero en formato de moneda?
Cómo instalar y configurar Sybase Adaptive Server Enterprise (ASE) en LinuxSuponiendo que el objetivo de salida sea Query Analyzer, tiene sentido querer que el formato se vea más atractivo. Pero, ¿cuántos usuarios de tu organización realmente usan Query Analyzer para hacer su trabajo? Asumo que menos de cinco. La mayoría de los usuarios optan por aplicaciones escritas en Microsoft Access, .NET, Excel o Delphi, cuyas funciones de formato superan a las de T-SQL por mucho. T-SQL no está diseñado para formatos elaborados, sino para la entrega eficiente de los datos subyacentes.
Sin embargo, es posible que tengas una razón legítima para entregar los datos en este formato; si es así, hay un costo asociado. La columna, tal como se entrega, ya no es de tipo money ni siquiera numérico, por lo que no puedes realizar funciones aritméticas (es decir, promedio, suma, mínimo, máximo, etc.) en ella. Si requieres tales operaciones, deberás agregar la columna real a la instrucción SELECT y luego realizar las operaciones en esa columna.
¿Por qué ofrecer código de servidor en lugar de código de cliente?
T-SQL ofrece soluciones a este problema de visualización, como se ilustra anteriormente, pero ¿son estas las soluciones correctas para tu situación? Al final, la solución a este problema reside en el código del cliente más que en el código SQL.
La mayoría de las veces, tu solución a este problema se encuentra en el código del cliente en lugar del código SQL. Sin embargo, reconozco que hay algunas situaciones en las que es mejor manejarlo en el código de servidor. Por ejemplo, Access, VB y .NET ofrecen la función Format(), que maneja este problema muy bien. Esto no siempre funcionará; por ejemplo, es posible que estés alimentando un archivo de texto en algún programa que espera que las cantidades de dinero se muestren de una sola manera.
Entonces, si necesitas el código de servidor, ahora lo tienes. Pero antes de implementarlo, ten en cuenta el costo descrito anteriormente.
Qué es sudo y por qué deberías usarloEn Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Gestión de datos, allí encontraras muchos artículos similares a Cómo mostrar cantidades de dinero en formato de moneda en SQL Server , tenemos lo ultimo en tecnología 2023.
Artículos Relacionados