在SQL Server中,有一个数值数据类型的值为15000000.00。
如何将该值转换为15,000,000?
在SQL Server中,有一个数值数据类型的值为15000000.00。
如何将该值转换为15,000,000?
在这里处理本地化是错误的,应该在表示层处理,而不是数据存储。
如果您正在使用money类型,或者希望结果为money类型,那么可以非常简单地实现:
SELECT CONVERT(VARCHAR, @money_val, 1) -- you may have to cast to money from int first
点击此链接查看更深入的讨论:
以下是节选:
逗号格式仅适用于MONEY数据类型。如果您想要为INT、DECIMAL等格式化逗号,则应将其转换为MONEY并使用样式标志1进行转换。
DECLARE @m DECIMAL(10,2) SELECT @m = '23456789.25'
SELECT CONVERT(VARCHAR, @m, 1) AS DecimalValue, CONVERT(VARCHAR, CAST(@m AS MONEY), 1) AS MoneyValue /* DecimalValue
MoneyValue
23456789.25 23,456,789.25 */
我一直以来都成功地使用了以下代码
SELECT
Convert(VARCHAR, Cast(100000.01 AS MONEY), 1) Amount
Results:
Amount
-----------------------------
100,000.01
这不是转换。15.000.000,00(德语写法)是表示1500万的字符串表示形式。十进制数据类型不存储字符串,而是存储值。
您看到的所有字符串表示形式基本上都是可视化的 - 在企业管理器或软件中根据设置(区域设置)生成字符串。
您不想以格式保存数字数据。在选择时,可以执行以下操作:
SELECT CONVERT(varchar(12), value, 1) AS formattedvalue FROM table
最后的1是一种转换样式,它会根据您的本地设置和数字类型放置 . 和 , 符号。
如果问我,我甚至不会让SQL数据库服务器担心这个问题,而是在代码中自己格式化数字。