我在数据库中有一个列name
,其中包含CVM™
之类的字符串,我想要做的就是拆分它,以便在&符号之后的所有内容都进入不同的列,并且字符串之前的所有内容都保留在原来的位置。最终结果应将™
放入名为abbr
的列中,并将CVM
保存到name
列。
答案 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。但是其他语言应该使用类似的方法。