重複の可能性:
通貨に最適なデータ型
データベース内に製品価格を格納するテーブルがあります。列タイプはに設定されDECIMAL(12, 2)
ます。ただし、次の価格を追加する1,199.00
と、保存すると、何らかの理由で1.00に変換されます。
または、のような価格を追加する12,000.00
と、12に変換されます。他のタイプのフィールドを使用して使用するか、他の値を追加する必要がありますDECIMAL
か?
重複の可能性:
通貨に最適なデータ型
データベース内に製品価格を格納するテーブルがあります。列タイプはに設定されDECIMAL(12, 2)
ます。ただし、次の価格を追加する1,199.00
と、保存すると、何らかの理由で1.00に変換されます。
または、のような価格を追加する12,000.00
と、12に変換されます。他のタイプのフィールドを使用して使用するか、他の値を追加する必要がありますDECIMAL
か?
のドキュメントにDECIMAL
よると、その列タイプは正常に機能するはずです。MySQL とのインターフェイスに別の言語 (PHP など) を使用している場合は、そのコードを SQL コードと共に投稿する必要があります。プレーン SQL では、指定した動作を再現できないためです。これは私が使用したサンプルです:
CREATE TABLE money (
amount DECIMAL(12, 2));
INSERT INTO `money` (`amount`) VALUES (12999.00);
INSERT INTO `money` (`amount`) VALUES (12,999.00);
INSERT
2 番目のステートメントは12,999.00
、2 つの分離された列に宛てられた 2 つの別個の値として認識されるため、これはエラーで失敗するはずです。列が 1 つしか表示されていないため ( amount
)、失敗します。エラーをどのように再現したかについては、このフィドルを参照してください。
あなたのデータ型 DECIMAL(12,2) は問題ないようです。
12,999.00 ではなく、12999.00 を挿入する必要があります。