在PostgreSQL中是否有像Ruby中的参数化函数?

时间:2017-05-24 21:07:03

标签: sql ruby postgresql

在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);

但是,我找不到任何能执行我需要它执行的操作的功能。有没有人能够帮助我解决这个挑战?

非常感谢朋友们!

1 个答案:

答案 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语句中批量处理大量查询。它非常高效,并且采用了大型工艺并且速度非常快。希望这可以帮助那些人。