Mysql

更新與貨幣相同的表列中的選定數據

  • August 22, 2018

我正在嘗試更新表格列中的選定數據並將此數據格式化為貨幣。

我的表格列包含具有混合整數和已格式化數據的字元串。這是因為我已經遷移了整數的舊數據,但是任何新數據或更新的舊數據在應用程序和數據庫中都被正確格式化。

我想從此表格列中選擇所有非格式化數據,然後將此數據更新為貨幣格式。0 至 0.00、200 至 200.00、23702 至 23,702.00、34000.00 至 34,000.00、2954795.54 至 2,954,795.54

任何幫助將不勝感激。

謝謝

您確實希望將數據儲存在正確數據類型的欄位中。如果這些值是貨幣金額,則將它們保存在合適的數據類型中,例如貨幣。

每當您將數據從一種類型轉換為另一種類型時,您都在為數據庫引擎做額外的工作,必須進行轉換,並且冒著失去您可能定義的任何索引的好處的風險,因為在每行中的欄位通常會強制數據庫對該表進行表掃描(除非您有基於函式的索引,但這是另一回事)。

使用“錯誤的”數據類型也意味著某些功能“無法正常工作”。如果您將數值儲存為字元串,那麼比較這些值“會出錯”。

例如,在數字世界中……

10 > 2  =>  TRUE

…正如您所期望的,但在角色世界中…

'10' > '2'  =>  FALSE
UPDATE table
SET field = FORMAT(CAST(field AS DECIMAL(10, 2)), 2)
WHERE NOT INSTR(field,',')

引用自:https://dba.stackexchange.com/questions/215510