2017-10-11 4 views
0

OracleにはJSONフィールドを持つテーブルがあり、それは可変であり、それを知る方法がないため、値ではなくキー名にアクセスします。Oracle jsonテーブルのカラムでノード名を取得

たとえば、json rootの最初の要素がこの項目であると考えられます。したがって、1回の時刻は$.keyname1で、もう1回の時刻は$.keyname2です。

$[0]のキー名が最初のものか2番目のものかを確認します。

答えて

1

オラクルが実際にJSONを真剣に受け入れているわけではないので、わたしの知る限り、これを行うことはまだ驚くほど困難です。

Oracle 12.2以降の場合は、the get_keys() function for the PL/SQL type JSON_OBJECT_Tを使用できます。

以前のバージョンを使用している場合(またはJSON_OBJECT_Tの代替をご希望の場合)the get_keys() function in the popular pljson libraryを使用できます。

他の種類の制限された環境にいる場合は、それは非常に悪いです。おそらく、JSON文字列の上にひどいsubstrを実行する必要があります。私はこれをお勧めしません。

select regexp_substr('{a:100, b:200, c:300}', '[^{:]+') as first_node from dual; 

あなたはget_keys()関数のいずれかを使用することはできませんし、あなたがよりよい解決策が必要な場合、私はまた、/あなたは変数ノードが含まれるように、アプリケーションのJSON世代の一部を変更することができることをお勧めしたいですキー名は既知のキー名を使用してアクセスすることができます。例えば。

{ variable_keys : ["keyname1","keyname2"], 
    keyname1  : "value1", 
    keyname2  : "value2" } 

しかし、あなたはまだSQL JSON関数(json_value、json_queryは)のみJSONパス式のために文字列リテラルを受け入れることから、このためにPL/SQLが必要になります。

+0

恐縮です、ありがとうございます! – mMoreo

関連する問題