2012-09-11 37 views
1

在導入我的數據庫,我已經意識到我犯了一個錯誤,進口一些數字在1K,而不是1000的格式,和1M的,而不是100萬。更換價值

我沒有看到這一點:

UPDATE YourTable 
    SET YourColumn = REPLACE(YourColumn, '%', ''); 

然而,這將產生怎樣看與1.25k,而不是1250我會得到1.25000

什麼是解決這一問題的可能方式有問題。

回答

1

使用CASE聲明:

update yourtable 
set yourcolumn = 
case when length(yourcolumn) <> 
      length(replace(yourcolumn, 'k', '')) 
then 
    replace(yourcolumn, 'k', '') * 1000 
else when length(yourcolumn) <> 
      length(replace(yourcolumn, 'm', '')) 
then 
    replace(yourcolumn, 'm', '') * 1000000 
else 
    yourcolumn 
end 

編輯:我假設yourcolumn是一個字符列,而不是數字。

+0

我得到了 #1064 - 你的SQL語法有錯誤;檢查對應於您的MySQL服務器版本的手冊,以便在'時長(數字)附近使用正確的語法'< >長度(替換(數字,'m','在第7行 –

+0

對不起,我沒有MySql本地可用。它可能是你需要的!=而不是<>,例如 – davek

+0

不知道是什麼問題(它發生在第二個其他人的時候),但我能通過運行命令兩次解決問題。 –