SQL将输出从十进制转换为逗号

时间:2015-02-18 19:52:11

标签: sql sql-server

我有sql查询(例如,从purchase_order中选择金额),输出类似123.45的内容。相反,我希望它输出像123,45(德国数字系统)。我该怎么做?

5 个答案:

答案 0 :(得分:0)

使用填充字符串函数将(。)替换为(,)

 select stuff(amount ,charindex('.', amount),1,',')
 from  purchase_order

答案 1 :(得分:0)

Use the REPLACE function

SELECT REPLACE(amount, '.',',') FROM purchase_order

请注意,这将替换匹配的所有值,因此在这种情况下,所有句点都将替换为逗号

答案 2 :(得分:0)

使用替换功能(如有必要,请事先转换为char)。示例:

REPLACE ( TO_CHAR(amount), '.', ',')`.

更好:正确设置您的语言环境。此后,所有数量的词汇都应遵循各自的惯例。

也可以选择根据具体情况来决定。示例(Oracle语法;您指定2个字符,小数点和组分隔符。对于德语,这将是,.,对于英语.,,分别为:

TO_CHAR ( amount, '9999D99', 'NLS_NUMERIC_CHARACTERS='',.''' )

答案 3 :(得分:0)

使用SQL Server 2012,您具有FORMAT功能。

即使在此之后涉及计算,也无需在数据库端执行此操作...

所以试试这个:

SQL Fiddle

MS SQL Server 2012架构设置

CREATE TABLE purchase_order
    ([amount] money)
;

INSERT INTO purchase_order
    ([amount])
VALUES
    (123.45)
;

查询1

select FORMAT ( amount, 'G', 'de-de' ) AS 'amount'
from purchase_order

<强> Results

|   AMOUNT |
|----------|
| 123,4500 |

答案 4 :(得分:0)

  

&#34;需要在数据库端进行,因为在此之后需要进行计算。

然后不要担心格式。在数据库中,它只是一个数字。无论如何观察,任何计算都将适用于数字本身。只有在查看号码时才会应用格式化。在计算之前不要进行任何格式化。

在最后一层进行格式化 - UI /报告层。