1

フィールド (タイプ longtext) 内のすべての数値を から に変更する必要がありますxxxxxx,yyxxx.xxx,yy

'x' 整数と 'y' 10 進数であること。

例:

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');

ただし、これは (3 番目のパラメーターのため) MySQL 5.5 でのみ機能し、MySQL 5.1 を使用するマシンでのみこれを実行できます。

4

1 に答える 1

3

データを保存して取得するためのデータベースがあります。きれいに見せないように。それをどこか別の場所で処理します。

更新:ロングテキスト列に保存されていることを確認できませんでした。そのように維持する重要な理由がない限り(おそらくない)、最善かつ唯一の答えは、その列のデータ型を変更する必要があるということです。

更新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', '.')
于 2012-11-06T17:18:17.577 に答える