Ruby on rails 删除Rails中字符串列中的所有字母

Ruby on rails 删除Rails中字符串列中的所有字母,ruby-on-rails,Ruby On Rails,我正在编写一个迁移,将列类型从string更改为integer def change change_column :emails, :object_id, :integer end 此迁移失败,因为此列已包含字符串值。在执行此迁移之前,我将尝试删除此列中的所有字母,以便只能获取整数值。现有值类似于 "AB12345" "A12345X" "789X26A" 在迁移之前,我应该执行什么脚本来删除所有字母,并只获得像这样的整数值 "12345" "12345" "78926" 谢谢我想您可

我正在编写一个迁移,将列类型从string更改为integer

def change
  change_column :emails, :object_id, :integer
end
此迁移失败,因为此列已包含字符串值。在执行此迁移之前,我将尝试删除此列中的所有字母,以便只能获取整数值。现有值类似于

"AB12345"
"A12345X"
"789X26A"
在迁移之前,我应该执行什么脚本来删除所有字母,并只获得像这样的整数值

"12345"
"12345"
"78926"

谢谢

我想您可以使用微调功能,但下面的行也可以

result = Replace("Some sentence containing Avenue in it.", "Avenue", "Ave")
来自

您可以将“A”更改为“” 将“B”改为“ect”

你最终会得到这样的代码

Do While ActiveCell.Value <>""
        ActiveCell.Value = Replace(ActiveCell.Value, "A", "")
        ActiveCell.Value = Replace(ActiveCell.Value, "B", "")
        ActiveCell.Value = Replace(ActiveCell.Value, "C", "")
        ect...
        ActiveCell.Offset (-1,0).Select
Loop
Do While ActiveCell.Value“”
ActiveCell.Value=Replace(ActiveCell.Value,“A”,“”)
ActiveCell.Value=Replace(ActiveCell.Value,“B”,“”)
ActiveCell.Value=Replace(ActiveCell.Value,“C”,“”)
发射型计算机断层扫描仪。。。
ActiveCell.Offset(-1,0)。选择
环

如果您有超过10000条记录,请在数据库中进行转换。对于博士后来说,这应该是:

select regexp_replace('1231ASDF12', '[^0-9]', '', 'g')
您可以使用
execute
在迁移中运行原始sql:

update table set col = regexp_replace(col,  '[^0-9]', '', 'g')

请记住,如果您打算将
对象\u id
作为外键,则需要更新引用的任何表,并确保您没有无意中损坏任何内容(例如,如果数据集中有AB123和BC123)。

它起作用了。对象id不是外键。因此,执行此脚本是安全的。谢谢