2016-08-05 10 views
2

私はデータベースのclob列にA_DOCとしてJavaクラスAを格納しています。Oracle 12cでCLOBとして保存されたJSON配列の要素数を取得する方法は?

Aの構造は次のようである:

{ 

id : 123 

var1: abc 

subvalues : [{ 

id: 1 
value : a 

}, 
{ 
id: 1 

value :b 
} 

... 

} 
]} 

は、私はそうで

select json_query(a.A_DOC, '$.subvalues.value') from table_name a; 

のようなことを行うとことができます知っているが、どのように私は数をカウントする方法を探していますSQLクエリを使用してsubvalues配列の要素を取得します。これは可能ですか?

答えて

3

あなたはJSON_TABLEを使用することができます。

SELECT 
    id, var1, count(sub_id) subvalues 
FROM 
    JSON_TABLE (
     to_clob('{ id: 123, var1: "abc", subvalues : [{ id: 1, value: "a", }, { id: 2, value: "b" } ]}'), 
     '$' 
     COLUMNS (
      id NUMBER PATH '$.id', 
      var1 VARCHAR PATH '$.var1', 
      NESTED PATH '$.subvalues[*]' 
      COLUMNS (
       sub_id NUMBER PATH '$.id' 
      ) 
     ) 
    ) 
GROUP BY id, var1 
+1

'json_count( '[...]')'か何かのようないくつかの簡単な関数はありますか? – Toolkit

関連する問題