Jay*_*een 19 postgresql rails-migrations ruby-on-rails-4
有一个很好的问题,在这里我想阐述一下.我试图将我的数据库中的列转换为字符串为整数.
我认为转换将是非常直接的转发.目前我的字符串是
["10", "12", "125", "135", "140", ...]
Run Code Online (Sandbox Code Playgroud)
我的迁移文件包括:
def change
change_column :table_name, :product_code, :integer
end
Run Code Online (Sandbox Code Playgroud)
Rails尝试这个,但Postgresql回复了一个错误.
PG ::错误:错误:列"product_code"无法自动转换为类型integer
HINT:指定USING表达式以执行转换.
我不确定如何在rails迁移中使用这个'USING'表达式.
所以我认为转换非常简单.我应该使用什么作为USING表达式?
Bjö*_*son 29
change_column :table_name, :product_code,
'integer USING CAST(product_code AS integer)'
Run Code Online (Sandbox Code Playgroud)
资料来源:http: //makandracards.com/makandra/18691-postgresql-vs-rails-migration-how-to-change-columns-from-string-to-integer
flo*_*ish 13
调整后的代码也支持转换空字符串:
change_column :table_name, :product_code,
"integer USING NULLIF(product_code, '')::int"
Run Code Online (Sandbox Code Playgroud)
空字符串变为NULL,变为0类型转换,这可能是您在这种情况下可以做的最好的.
| 归档时间: |
|
| 查看次数: |
6399 次 |
| 最近记录: |