我正在从外部源加载数据转储,一些字符串包含\uXXXX
UTF8 字符的序列,如下所示:
\u017D\u010F\u00E1r nad S\u00E1zavou
我可以通过使用 E'' 常量来检查内容psql
,但找不到任何函数/运算符来返回正确的值。
我想问一下,是否可以在不使用 PL/pgSQL 函数的情况下将这个带有 unicode 转义的字符串转换为普通的 UTF8?
我正在从外部源加载数据转储,一些字符串包含\uXXXX
UTF8 字符的序列,如下所示:
\u017D\u010F\u00E1r nad S\u00E1zavou
我可以通过使用 E'' 常量来检查内容psql
,但找不到任何函数/运算符来返回正确的值。
我想问一下,是否可以在不使用 PL/pgSQL 函数的情况下将这个带有 unicode 转义的字符串转换为普通的 UTF8?
我不认为有一个内置的方法。我能想到的最简单的方法是您想要避免的 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,而且速度也更快。