Sql server 如何将数字显示为美元格式

Sql server 如何将数字显示为美元格式,sql-server,Sql Server,例如,我有一个netshare 1786234247.87,如何在它前面加上一美元,在数字后面加上十亿美元,并将其四舍五入为17亿美元,你在问哪种sql语言方言?每种方言都有不同的选项来执行此操作。 但以下是对mysql、postgresql和redshift的一般回应 这是mssql的stackoverflow ================================== SQL 2012的优化答案 要做到这一点,您必须将您的数据类型转换为其他类型,而不是浮点或十进制或您当前拥有

例如,我有一个netshare 1786234247.87,如何在它前面加上一美元,在数字后面加上十亿美元,并将其四舍五入为17亿美元,你在问哪种sql语言方言?每种方言都有不同的选项来执行此操作。 但以下是对mysql、postgresql和redshift的一般回应

这是mssql的stackoverflow

==================================

SQL 2012的优化答案


要做到这一点,您必须将您的数据类型转换为其他类型,而不是浮点或十进制或您当前拥有的任何类型。您最好在表示层上进行转换,无论是HTML、SSRS报告等

如果你不想接受这一点,那么你会受到一些伤害。这就是您的解决方案的外观:

DECLARE @Money DECIMAL = 121343044114.52
SELECT 
    MoneyString  =  
    CASE 
        WHEN @Money BETWEEN 1000000 AND 999999999 THEN '$' + SUBSTRING(CONVERT(VARCHAR(MAX), @Money), 0, LEN(CONVERT(VARCHAR(MAX), @Money))-5) + ' MILLION'
        WHEN @Money BETWEEN 1000000000 AND 999999999999 THEN '$' + SUBSTRING(CONVERT(VARCHAR(MAX), @Money), 0, LEN(CONVERT(VARCHAR(MAX), @Money))-8) + ' BILLION'
    END
    ,SUBSTRING(CONVERT(VARCHAR(MAX), @Money), 0, LEN(CONVERT(VARCHAR(MAX), @Money))-5)

它需要做大量的工作,但可以让您了解如果绝对必须这样做,您将要做什么。

sql不是用来显示数据的。你用什么来展示它?php?javascript??你的数据库是用来存储数据的,就是这样。您可以编写一个用于查看它的应用程序(或报告等)。在这里,您可以格式化数据,使其看起来漂亮,并带有美元符号等。它位于sql server 2012中,定义了sql 2012的答案
DECLARE @Money DECIMAL = 121343044114.52
SELECT 
    MoneyString  =  
    CASE 
        WHEN @Money BETWEEN 1000000 AND 999999999 THEN '$' + SUBSTRING(CONVERT(VARCHAR(MAX), @Money), 0, LEN(CONVERT(VARCHAR(MAX), @Money))-5) + ' MILLION'
        WHEN @Money BETWEEN 1000000000 AND 999999999999 THEN '$' + SUBSTRING(CONVERT(VARCHAR(MAX), @Money), 0, LEN(CONVERT(VARCHAR(MAX), @Money))-8) + ' BILLION'
    END
    ,SUBSTRING(CONVERT(VARCHAR(MAX), @Money), 0, LEN(CONVERT(VARCHAR(MAX), @Money))-5)