Json值可以包含一个字符串值。例如。:
postgres=# SELECT to_json('Some "text"'::TEXT); to_json ----------------- "Some \"text\""
如何提取该字符串作为postgres文本值?
::TEXT不起作用。它返回带引号的json,而不是原始字符串:
::TEXT
postgres=# SELECT to_json('Some "text"'::TEXT)::TEXT; to_json ----------------- "Some \"text\""
谢谢。
PS我正在使用PostgreSQL 9.3
PostgreSQL中没有办法解构标量JSON对象。因此,正如您所指出的,
select length(to_json('Some "text"'::TEXT) ::TEXT);
是15
诀窍是将JSON转换为一个JSON元素的数组,然后使用提取该元素->>。
->>
select length( array_to_json(array[to_json('Some "text"'::TEXT)])->>0 );
将返回11。