带有MySQL的number_format()

ant*_*paw 18 mysql

嘿,我需要一种从我的专栏中获取格式化数字的方法 decimal(23,2) NOT NULL DEFAULT '0.00'

在PHP我可以使用number_format('1111.00', 2, ',', '.'); 它将返回的这个函数1.111,00(在德国我们使用,以定义十进制数字)

我将如何在mysql中执行此操作?用字符串替换?

Min*_*ker 29

http://blogs.mysql.com/peterg/2009/04/

在Mysql 6.1中,您将能够执行FORMAT(X,D [,locale_name])

如在

 SELECT format(1234567,2,’de_DE’);
Run Code Online (Sandbox Code Playgroud)

目前,这种能力不存在,但您可以在数据库中设置您的语言环境my.ini检查它.


Pat*_*ick 20

由于性能损失,如果你只需要在SQL中使用它,你可以使用该 FORMAT函数和3 REPLACE:格式化后.用另一个char @代替,然后将,a 替换为a .然后用你选择的字符替换,你的示例至1.111,00

SELECT REPLACE(REPLACE(REPLACE(FORMAT("1111.00", 2), ".", "@"), ",", "."), "@", ",")
Run Code Online (Sandbox Code Playgroud)


小智 11

您可以使用

SELECT round(123.4566,2)  -> 123.46
Run Code Online (Sandbox Code Playgroud)


小智 7

FORMAT(X,D)将数字X格式化为'#,###,###.##'等格式,舍入到D小数位,并将结果作为字符串返回.如果D为0,则结果没有小数点或小数部分.

 SELECT FORMAT(12332.123456, 4);
        -> '12,332.1235'
Run Code Online (Sandbox Code Playgroud)