更改MySQL中的数字格式(欧洲格式)

时间:2012-11-06 15:56:25

标签: mysql formatting

我需要更改字段中的所有数字(类型为longtext),从xxxxxx,yy更改为xxx.xxx,yy

为'x'整数和'y'十进制数。

示例:

  

6000,00至6.000,00

     

100000,00至100.000,00

我尝试了format,但它更改了一个数字:

  

xxxxxx,yy到xxx,xxx.yy

示例:

  

1200,00至1,200.00

有任何建议如何实现这一目标?

更新

我必须使用当前的数据类型,我不允许更改它,这不是我的决定。我已经知道这不是处理事情的正确方法。

我需要的是与此次更新相同的内容:

UPDATE <table> SET <field> = FORMAT(<field>, 2, 'de_DE');

然而,这仅适用于MySQL 5.5(因为第三个参数),我只能在使用MySQL 5.1的机器上执行此操作

1 个答案:

答案 0 :(得分:2)

数据库用于存储并获取数据。不要让它看起来很漂亮。处理其他地方。

更新:未发现您已将其存储在longtext列中。只要没有重要的原因(我打赌没有)保持这种方式,最好也是唯一的答案是,您应该更改该列的数据类型。

更新2:如果你坚持......

create table lt(lt longtext);
insert into lt values ('6000,00'), ('1234567,12');
select 
lt,
replace(replace(replace(format(convert(replace(lt, ',', '.'), decimal(10,2)), 2), ',', 'x'), '.', ','), 'x', '.')
from lt

更新3:如果全部都是x,00,您可以免费转换并按照以下方式执行:

replace(replace(replace(format(lt, 2), ',', 'x'), '.', ','), 'x', '.')