21 Oracle SQLファンクションJSON_SERIALIZE
Oracle SQLファンクションjson_serialize
は、入力としてJSONデータ(任意のSQLデータ型、VARCHAR2
、CLOB
またはBLOB
)を受け取り、そのテキスト表現(VARCHAR2
、CLOB
またはBLOB
データ)を返します。VARCHAR2(4000)
はデフォルトの戻り型です。
通常、問合せの結果を変換するには、json_serialize
を使用します。エラー句およびRETURNING句がサポートされています。結果にフォーマット出力を指定でき、結果を切り捨てて戻り型に適合させることができます。
ファンクションjson_serialize
は、常にJSON標準(RFC 4627)に準拠するJSONデータを生成します。返されるデータに使用されるのは、JSON言語の標準のデータ型(オブジェクト、配列、スカラー型の文字列、数値、ブールおよびNull)のみです。
json_serialize
を使用すると、バイナリのJSONデータをテキスト形式(CLOB
またはVARCHAR2
)に変換することや、フォーマット出力やASCII Unicode以外の文字のエスケープによってテキストのJSONデータを変換することができます。重要なユースケースとして、BLOB
列に格納されているJSONデータをシリアライズする場合があげられます。BLOB
の結果はAL32UTF8文字セットです。ただし、json_serialize
によって返されるデータ型に関係なく、返されるデータはテキストのJSONデータを表します。
関連項目:
Oracle SQLファンクションjson_serialize
の詳細は、Oracle Database SQL言語リファレンスを参照してください
例21-1 JSON_SERIALIZEを使用したBLOBデータのフォーマット出力テキストへの変換
この例では、表j_purchaseorder
の列po_document
から選択されたフィールドPONumber
データの値として1600
を持つJSON発注書をシリアライズしてフォーマット出力します。戻り値のデータ型はVARCHAR2(4000)
(デフォルトの戻り型)です。
例4-2に、このような発注書のデータをVARCHAR2
表に挿入する方法を示します。ただし、json_serialize
は、BLOB
データのシリアライズに特に役立ちます。
SELECT json_serialize(po_document PRETTY) FROM j_purchaseorder;