我有sql查询(例如,从purchase_order中选择金额),输出类似123.45的内容。相反,我希望它输出像123,45(德国数字系统)。我该怎么做?
答案 0 :(得分:0)
使用填充字符串函数将(。)替换为(,)
select stuff(amount ,charindex('.', amount),1,',')
from purchase_order
答案 1 :(得分:0)
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
功能。
即使在此之后涉及计算,也无需在数据库端执行此操作...
所以试试这个:
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 /报告层。