OracleにはJSONフィールドを持つテーブルがあり、それは可変であり、それを知る方法がないため、値ではなくキー名にアクセスします。Oracle jsonテーブルのカラムでノード名を取得
たとえば、json rootの最初の要素がこの項目であると考えられます。したがって、1回の時刻は$.keyname1
で、もう1回の時刻は$.keyname2
です。
$[0]
のキー名が最初のものか2番目のものかを確認します。
OracleにはJSONフィールドを持つテーブルがあり、それは可変であり、それを知る方法がないため、値ではなくキー名にアクセスします。Oracle jsonテーブルのカラムでノード名を取得
たとえば、json rootの最初の要素がこの項目であると考えられます。したがって、1回の時刻は$.keyname1
で、もう1回の時刻は$.keyname2
です。
$[0]
のキー名が最初のものか2番目のものかを確認します。
オラクルが実際に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が必要になります。
恐縮です、ありがとうございます! – mMoreo