2

我正在从外部源加载数据转储,一些字符串包含\uXXXXUTF8 字符的序列,如下所示:

\u017D\u010F\u00E1r nad S\u00E1zavou

我可以通过使用 E'' 常量来检查内容psql,但找不到任何函数/运算符来返回正确的值。

我想问一下,是否可以在使用 PL/pgSQL 函数的情况下将这个带有 unicode 转义的字符串转换为普通的 UTF8?

4

1 回答 1

3

我不认为有一个内置的方法。我能想到的最简单的方法是您想要避免的 plpgsql 函数:

CREATE OR REPLACE FUNCTION str_eval(text, OUT t text)
  LANGUAGE plpgsql IMMUTABLE STRICT PARALLEL SAFE AS
$func$
BEGIN
   EXECUTE 'SELECT E''' || replace($1, '''', '''''') || ''''
   USING $1
   INTO t;
END
$func$;

更新的版本可以防止SQLi,而且速度也更快。

于 2012-04-12T02:57:52.917 回答