24.6 フィールド列の優先名の指定
JSONフィールドは、データベース・ビュー内の非JSON列として、またはJSON列を含む同じ表に追加される非JSON仮想列として、データから投影されるようにできます。このような列に優先名を指定できます。
(文書フィールドは、プロシージャDBMS_JSON.create_view
、DBMS_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 =>
prefix
—o: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 |
関連項目:
-
JSONデータ・ガイドのフィールド(フィールド
o:preferred_column_name
のデフォルト値の詳細およびDBMS_JSON.rename_column
を使用するときに発生する可能性がある名前の競合) -
JSON列を含む表の作成(ここで参照されるJSONデータの詳細)
-
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス(
DBMS_JSON.create_view
に関する詳細) -
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス(
DBMS_JSON.create_view_on_path
に関する詳細) -
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス(
DBMS_JSON.rename_column
に関する詳細) -
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス(
DBMS_JSON.add_virtual_columns
に関する詳細)
例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;
/
親トピック: JSONデータ・ガイド