我需要更改字段中的所有数字(类型为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的机器上执行此操作
答案 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', '.')