【问题标题】:hstore value with single quote带单引号的 hstore 值
【发布时间】:2013-07-30 19:12:32
【问题描述】:

我在这里问了类似的问题:hstore value with space。并由用户解决:Clodoaldo Neto。现在我遇到了包含单引号的字符串的下一个案例。

SELECT 'k=>"name", v=>"St. Xavier's Academy"'::hstore;

我通过阅读http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS 尝试使用美元引号字符串常量

SELECT 'k=>"name", v=>$$St. Xavier's Academy$$'::hstore;

但我做错了。

如何使用包含单引号的字符串制作 postgresql hstore? 这个查询似乎有更多这样的例外。如何一次解决所有问题?

【问题讨论】:

    标签: postgresql hstore string-constant


    【解决方案1】:

    您可以像在字符串文字中转义任何其他单引号一样转义嵌入的单引号:加倍。

    SELECT 'k=>"name", v=>"St. Xavier''s Academy"'::hstore;
    -- ------------------------------^^
    

    或者,你可以用美元引用整个字符串:

    SELECT $$k=>"name", v=>"St. Xavier's Academy"$$::hstore;
    

    无论您使用什么接口与 PostgreSQL 对话,都应该处理这些引用和转义问题。如果您使用手动字符串整理来构建 SQL,那么您应该使用驱动程序的引用和占位符方法。


    hstore's internal parsing 理解键周围的双引号:

    包含空格、逗号、=s 或 >s 的双引号键和值。

    正如您所说,美元引用对于 SQL 字符串文字,hstore 的解析器不知道它们的含义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 2012-08-05
      • 1970-01-01
      相关资源
      最近更新 更多