json 中的 postgres 9.4 和 unicode

postgres 9.4 and unicode in json

我最终将一些 json 数据导入数据库,其中在 json 键中包含 unicode 转义。而且我似乎找不到解决数据的方法。最简单的例子是:

select '{"test\u0007":123}'::json->'test\u0007'

我得到的不是 123,而是 NULL。有人可以帮忙吗?

运算符接受 jsontext 操作数。在 text 中,根据 SQL 规范,反斜杠转义没有意义。

如果你想匹配那个键,你需要在字符串中逐字插入未转义的文本,或者使用 PostgreSQL 扩展,E'' 字符串,例如:

regress=> select '{"test\u0007":123}'::json ->> E'test\u0007';
 ?column? 
----------
 123
(1 row)

json 以其 解码的 形式进行比较,这就是原件不起作用的原因。