例
次のクエリーでは、T.jsonColとT.idは列参照として解釈されます。
SELECT T.id, T.jsonCol FROM test.jsonTable T WHERE id < 3 ORDER BY 1;
結果:
id jsonCol -------------- 1 {"name" : "Cameron", "numbers" : [1,2,3,[1,2]]} 2 {"name" : "Cameron", "name" : "Lewis"}
例
次のクエリーでは、jsonCol.nameはJSONエンティティ参照として解釈されます。
SELECT jsonCol.name FROM test.jsonTable WHERE id=1;
結果:
id jsonCol.name ------------------- 1 Cameron
例
次のクエリーではエラーが返されます。これは、jsonColという名前のJSON列に複数のソース テーブルがあるためです。
SELECT jsonCol.name FROM test.jsonTable, test.jsonTable2;
結果:
*** Failure 3809 Column 'jsonCol' is ambiguous.
例
次のクエリーは、完全修飾列参照として指定されたJSONエンティティ参照を示しています。
SELECT id, test.jsonTable.jsonCol.name FROM test.jsonTable WHERE id=1;
結果:
id jsonTable.jsonCol.name ---------------------------------- 1 Cameron
例
次に、完全修飾列参照として指定された間違ったJSONエンティティ参照を示します。
SELECT test.jsonTable.id.name FROM test.jsonTable WHERE id=1;
クエリーはエラーを返します。
*** Failure 3706 Syntax error: Invalid use of JSON entity reference syntax on non-JSON type.
例
次のクエリーでは、jsonTable.jsonCol.nameはdatabase.table.column参照のような外観のJSONエンティティ参照です。
SELECT id, jsonTable.jsonCol.name FROM test.jsonTable WHERE id=1;
結果:
id jsonTable.jsonCol.name ----------------------------- 1 Cameron
例
間違った JSON エンティティ参照
SELECT jsonTable.id.name FROM test.jsonTable WHERE id=1;
結果:
*** Failure 3802 Database 'jsonTable' does not exist.
例
次のクエリーでは、jsonCol.name."first"はソース テーブルtest.jsonTableのjsonCol列でエンティティ参照として解釈されます。
SELECT T.id, jsonCol.name."first" FROM test.jsonTable T, test.jsonTable3 T3 ORDER BY T.id;
結果:
id jsonCol.name.first ------------------------- 1 ? 2 ? 3 Cameron
例
次のクエリーでは、jsonColへの参照が曖昧です。これは、両方のソース テーブルにjsonColという名前のJSON列が含まれるからです。
SELECT T.id, jsonCol.name."first" FROM test.jsonTable T, test.jsonTable2 T2 ORDER BY T.id;
クエリーはエラーを返します。
*** Failure 3809 Column 'jsonCol' is ambiguous.
例
この例では、jsonTable2は現在のデータベースにありjsonColと呼ばれるJSON列をともなうので、jsonTable2.jsonCol.nameはJSONエンティティ参照として解釈されます。
SELECT jsonTable2.id, jsonTable2.jsonCol.name FROM test.jsonTable3;
結果:
id jsonCol.name ------------------------------ 1 Cameron