1. ホーム
  2. json

[解決済み] Postgres: jsonの文字列をテキストに変換するには?

2022-10-21 19:32:42

質問

Jsonの値が文字列で構成されている場合があります。

postgres=# SELECT to_json('Some "text"'::TEXT);
     to_json
-----------------
 "Some \"text\""

その文字列をpostgresのテキスト値として取り出すにはどうしたらよいでしょうか?

::TEXT はうまくいきません。元の文字列ではなく、引用されたjsonが返されます。

postgres=# SELECT to_json('Some "text"'::TEXT)::TEXT;
     to_json
-----------------
 "Some \"text\""

ありがとうございます。

追伸:PostgreSQL 9.3を使っています。

どのように解決するのですか?

PostgreSQLには、スカラーJSONオブジェクトを分解する方法はありません。したがって、ご指摘のように

select  length(to_json('Some "text"'::TEXT) ::TEXT);

は15です。

トリックは、JSONを1つのJSON要素の配列に変換し、その要素を抽出するために ->> .

select length( array_to_json(array[to_json('Some "text"'::TEXT)])->>0 );

は11を返します。