1

name在数据库中有一个列,其中包含字符串,就像CVM™我想要做的是将它拆分,以便&符号之后的所有内容都进入不同的列,而字符串之前的所有内容都保持在原来的位置。最终结果应放入™名为abbr并保存CVMname列中的列中。

4

2 回答 2

1

创建 rake 任务文件

lib/tasks/split_name.rake

然后粘贴以下内容,并将“TableName”更改为您的实际表名。

task :split_name => :environment do
    TableName.all.each do |r|
        a = r.name.split("&") #assuming exact same string format, and not null
        r.update_attribute(:name, a[0])
        r.update_attribute(:abbr, '&' + a[1])
    end
end

然后像这样运行它

rake split_name
于 2012-12-11T03:42:12.220 回答
0

这必须在 Rails 级别完成吗?您也可以仅使用具有split_part功能的 Postgres 来执行此操作。我假设您正在使用users表格:

ALTER TABLE users ADD COLUMN abbr VARCHAR;

UPDATE users 
  SET name = SPLIT_PART(name, '™', 1),
      abbr = '™' || SPLIT_PART(name, '™', 2);

如果需要,您还可以将这些查询烘焙到 Rake 任务中。

更新:Opps 我假设您使用的是 Postgres。但是其他语言应该有类似的方法可以使用。

于 2012-12-11T03:52:46.270 回答