Examples: Ambiguous JSON Dot Notation - Advanced SQL Engine - Teradata Database

JSON Data Type

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
July 2021
Language
English (United States)
Last Update
2021-07-27
dita:mapPath
uwa1591040057999.ditamap
dita:ditavalPath
uwa1591040057999.ditaval
dita:id
B035-1150
lifecycle
previous
Product Category
Teradata Vantageā„¢

Example

In the following query, T.jsonCol and T.id are interpreted as column references.
SELECT T.id, T.jsonCol
FROM test.jsonTable T
WHERE id < 3
ORDER BY 1;
Result:
id     jsonCol
--------------
1      {"name" : "Cameron", "numbers" : [1,2,3,[1,2]]}
2      {"name" : "Cameron", "name" : "Lewis"}

Example

In the following query, jsonCol.name is interpreted as JSON dot notation.
SELECT id, jsonCol.name
FROM test.jsonTable
WHERE id=1;
Result:
id     jsonCol.name
-------------------
1      Cameron

Example

The following query returns an error because there is more than one source table with a JSON column named jsonCol.
SELECT jsonCol.name
FROM test.jsonTable, test.jsonTable2;
Result:
*** Failure 3809 Column 'jsonCol' is ambiguous.

Example

The following query shows a JSON dot notation reference specified as a fully qualified column reference.
SELECT id, test.jsonTable.jsonCol.name
FROM test.jsonTable
WHERE id=1;
Result:
id     jsonTable.jsonCol.name
----------------------------------
1      Cameron

Example

The following shows incorrect JSON dot notation specified as a fully qualified column reference.
SELECT test.jsonTable.id.name
FROM test.jsonTable
WHERE id=1;
The query returns an error.
*** Failure 3706 Syntax error: Invalid use of JSON entity reference syntax on non-JSON type.

Example

In the following query, jsonTable.jsonCol.name is a JSON dot notation reference that looks like a database.table.column reference.
SELECT id, jsonTable.jsonCol.name
FROM test.jsonTable
WHERE id=1;
Result:
id     jsonTable.jsonCol.name
-----------------------------
1      Cameron

Example

Incorrect JSON dot notation reference

SELECT jsonTable.id.name
FROM test.jsonTable
WHERE id=1;
Result:
*** Failure 3802 Database 'jsonTable' does not exist.

Example

In the following query, jsonCol.name."first" is interpreted as a dot notation reference on the jsonCol column of the source table, test.jsonTable.
SELECT T.id, jsonCol.name."first"
FROM test.jsonTable T, test.jsonTable3 T3
ORDER BY T.id;
Result:
id     jsonCol.name.first
-------------------------
1      ?
2      ?
3      Cameron

Example

In the following query, the reference to jsonCol is ambiguous because both source tables have a JSON column named jsonCol.
SELECT T.id, jsonCol.name."first"
FROM test.jsonTable T, test.jsonTable2 T2
ORDER BY T.id;
The query returns an error.
*** Failure 3809 Column 'jsonCol' is ambiguous.

Example

In this example, jsonTable2 is in the current database and it has a JSON column called jsonCol, so jsonTable2.jsonCol.name is interpreted as JSON dot notation.
SELECT jsonTable2.id, jsonTable2.jsonCol.name
FROM test.jsonTable3;
Result:
id     jsonCol.name
------------------------------
1      Cameron