转义 postgresql 中函数中输入参数中的单引号



我有一个JSON,它带有单引号,用于其中一个字段,如下所示。将创建以 JSON 作为输入参数的函数,并直接从应用程序调用。至少如果将其读入函数,我会使用regexp_replace。

例如:

select '{
  "phrase": "foo",
  "phrase_1": "'bar'"
  }' :: json 
syntax error at or near "'"
  }'"
LINE 3:   "phrase_1": "'bar'"

此输出是一个错误。 所以我的实际问题是这个 JSON 直接读入我的函数。

create or replace function f_n(in json) -- it is failing to read here
returns text
---
---
end;
$$

那么我可以在这里做些什么来避免 PostgreSQL 中的此类问题呢?

单引号在 SQL 中需要重复才能转义:

select '{
  "phrase": "foo",
  "phrase_1": "''bar''"
  }'::json;

或者使用Postgres的美元报价来避免这种情况:

select $j${
  "phrase": "foo",
  "phrase_1": "'bar'"
  }$j$::json;

当将其作为参数传递给函数时,其工作原理相同:

select f_n('{
  "phrase": "foo",
  "phrase_1": "''bar''"
  }'::json);

select f_n($j${
      "phrase": "foo",
      "phrase_1": "'bar'"
      }$j$::json);

相关内容

  • 没有找到相关文章

最新更新