【问题标题】:How do I escape and replace text with quotes in Postgresql?如何在 Postgresql 中转义并用引号替换文本?
【发布时间】:2014-09-15 04:10:53
【问题描述】:

我有一个使用 Postgresql 的 Rails 4.1 应用程序。我想替换我数据库中的以下所有文本:

'100': 'hello world

用这个:

'100': 'greetings!\\n hello world

这是我试图转义和替换文本的一种尝试:

query = "update notes set text = replace(text, \"'100': 'hello world\", \"'100': 'greetings!\\n hello world'\" )"
ActiveRecord::Base.connection.execute(query)

我尝试了更多方法,但都没有奏效。如何正确转义和替换文本?

【问题讨论】:

  • 看起来像json。如果是这样,不要只是对其进行文本替换;您应该真正解析 json,提取键的值,然后替换该值。 (如果您使用的是 PostgreSQL 9.3,您可以在数据库中执行此操作,而无需使用额外的语言函数)。

标签: sql ruby-on-rails postgresql ruby-on-rails-4 escaping


【解决方案1】:

我最终在 ruby​​ 中而不是 SQL 中执行此操作。这是我创建的函数:

def replace_text(id)
  note = Note.find(id)
  note.text = note.text.gsub(/'100'\s{0,1}:\s{0,1}'hello world/, "'100': 'greetings!\\nhello world")
  note.save
end

【讨论】:

    猜你喜欢
    • 2011-08-12
    • 2015-07-31
    • 2012-12-31
    • 2017-08-05
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多