2012-09-11 36 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

不知道是什么问题(它发生在第二个其他人的时候),但我能通过运行命令两次解决问题。 –