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