24.6 フィールド列の優先名の指定

JSONフィールドは、データベース・ビュー内の非JSON列として、またはJSON列を含む同じ表に追加される非JSON仮想列として、データから投影されるようにできます。このような列に優先名を指定できます。

(文書フィールドは、プロシージャDBMS_JSON.create_viewDBMS_JSON.create_view_on_pathまたはDBMS_JSON.add_virtual_columnsを使用するときに列として投影されます。)

JSON文書セットから取得したデータ・ガイドは、この投影の定義に使用されます。投影された各列の名前は、投影されるJSONデータ・フィールド用にデータ・ガイド・フィールドo:preferred_column_nameから取得されます。

JSONデータにデータ・ガイド対応検索索引がある場合は、プロシージャDBMS_JSON.rename_columnを使用して、特定の文書フィールドおよびタイプに対してo:preferred_column_nameの値を設定できます。例24-4に、これを示します。表24-4に示すように、様々なフィールドから投影された列に優先名を指定します。

階層データ・ガイドまたはスキーマ・データ・ガイドには、フィールドo:preferred_column_nameが移入されます。プロシージャDBMS_JSON.create_viewまたはDBMS_JSON.add_virtual_columnsを使用する場合は、投影される列のネーミングをさらに制御するパラメータを渡すことができます。

  • colNamePrefix => prefixo:preferred_column_nameで指定された名前に接頭辞prefixを付けます。

  • mixedCaseColumns => FALSE — 列名の大文字と小文字を区別しません。(デフォルトでは大文字と小文字が区別されます。)

  • resolveNameConflicts => TRUE (デフォルト) — 名前の競合を解決します。

表24-4 いくつかのJSONフィールド列の優先名

フィールド JSON型 優先列名
PONumber number PONumber
Phone (オブジェクトでなく文字列としての電話で番号) string Phone
type (電話の型) string PhoneType
number (電話番号) string PhoneNumber
ItemNumber (明細項目番号) number ItemNumber
Description (部品の説明) string PartDescription

関連項目:

例24-4 いくつかのJSONフィールドの優先列名の指定

BEGIN
  DBMS_JSON.rename_column(
    'J_PURCHASEORDER', 'DATA',
    '$.PONumber',
    DBMS_JSON.TYPE_NUMBER, 'PONumber');
  DBMS_JSON.rename_column(
    'J_PURCHASEORDER', 'DATA',
    '$.ShippingInstructions.Phone',
    DBMS_JSON.TYPE_STRING, 'Phone');
  DBMS_JSON.rename_column(
    'J_PURCHASEORDER', 'DATA',
    '$.ShippingInstructions.Phone.type',
    DBMS_JSON.TYPE_STRING, 'PhoneType');
  DBMS_JSON.rename_column(
    'J_PURCHASEORDER', 'DATA',
    '$.ShippingInstructions.Phone.number',
    DBMS_JSON.TYPE_STRING, 'PhoneNumber');
  DBMS_JSON.rename_column(
    'J_PURCHASEORDER', 'DATA',
    '$.LineItems.ItemNumber',
    DBMS_JSON.TYPE_NUMBER, 'ItemNumber');
  DBMS_JSON.rename_column(
    'J_PURCHASEORDER', 'DATA',
    '$.LineItems.Part.Description',
    DBMS_JSON.TYPE_STRING, 'PartDescription');
END;
/