gpt4 book ai didi

ruby-on-rails - 从 Rails 中的字符串列中删除所有字母

转载 作者:行者123 更新时间:2023-12-04 18:24:38 25 4
gpt4 key购买 nike

我正在编写迁移以将列类型从字符串更改为整数。

def change
change_column :emails, :object_id, :integer
end

此迁移失败,因为此列已包含字符串值。在执行此迁移之前,我试图从此列中删除所有字母,以便我只能获取整数值。现有值就像

"AB12345"
"A12345X"
"789X26A"

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

"12345"
"12345"
"78926"

谢谢

最佳答案

如果您有超过 10,000 条记录,请在数据库本身中进行转换。对于 postgres,这将是这样的:

select regexp_replace('1231ASDF12', '[^0-9]', '', 'g')

您可以使用execute 在迁移中运行原始 sql:

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

请记住,如果您打算将 object_id 作为外键,您需要更新任何引用的表,并确保您没有无意中破坏任何东西(例如,如果有是数据集中的 AB123 和 BC123)。

关于ruby-on-rails - 从 Rails 中的字符串列中删除所有字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33393290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com