Rails:如何在特定字符后拆分字符串

时间:2012-12-11 03:34:29

标签: ruby-on-rails ruby ruby-on-rails-3

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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。但是其他语言应该使用类似的方法。