在Ruby中,字符串对象上有一个非常有用的函数,它将获取字符串并对该字符串中的字符进行参数化,以便可以在URL中使用。即:
2.2.2 :001 > "Rising Star".parameterize
=> "rising-star"
在SQL中是否有类似的函数可以在字符串上执行相同的功能?
用例:
我需要编写一个SQL脚本,它将执行以下操作:
UPDATE companies SET unique_permalink = id + name;
如果SQL中有参数化函数,我希望我可以执行以下操作:
UPDATE companies SET unique_permalink = id + parameterize(name);
但是,我找不到任何能执行我需要它执行的操作的功能。有没有人能够帮助我解决这个挑战?
非常感谢朋友们!
答案 0 :(得分:0)
所以我发现这个问题的解决方案并不是我所寻求的100%答案,但是,与我能找到或想出的任何替代方案相比,这是一个巨大的性能提升。
connection = ActiveRecord::Base.connection
Company.all.find_in_batches do |companies|
cases = companies.map{|c| "UPDATE companies set unique_permalink = {c.id}-#{c.name.parameterize}' where id = #{c.id}"}
query = cases.join('; ')
connection.execute(query)
end
此解决方案的性能提升来自于在单个SQL语句中批量处理大量查询。它非常高效,并且采用了大型工艺并且速度非常快。希望这可以帮助那些人。