DB2 LUW-Json_Table 函数语法错误
DB2 LUW-Json_Table function Syntax errors
我正在尝试将 Json 数据数组插入 DB2 中的临时 table。我开始知道我可以使用 Json_Table 函数来实现这一点。我为这个函数找到了 2 个语法不同的 link。
有人可以帮忙理解一下它们之间的区别吗?
-
-
根据我的用例,我发现 link 1 是 suitable,所以我在 DB2 LUW V11.1/V11.5[=44] 中尝试了该示例=] 环境 我收到语法错误,提示 JSON_Table 无效。 Link 1 中的语法是否在 DB2 LUW V11.1/V11.5 中不受支持?我在这里遗漏了什么吗?
我刚刚从 Link 1 (https://www.ibm.com/support/producthub/db2/docs/content/SSEPGG_11.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0070414.html?pos=2) 中获取示例代码,如下所示
SELECT U."id", U."first name", U."last name", U."phone number"
FROM EMPLOYEE_TABLE E
JSON_TABLE(E.jsondoc, 'strict $'
COLUMNS( "id" INTEGER,
"firstname" VARCHAR(20),
"lastname" VARCHAR(20),
"phoneno" VARCHAR(20))
ERROR ON ERROR) AS U
我收到标记错误,例如“此行有多个标记
- 用于 Linux、UNIX 和 Windows 的 DB2:“
”应该构成一个完整的范围。
- 用于 Linux、UNIX 和 Windows 的 DB2:"U."id", U."first name", U."last name", U."phone 数字”
来自 JSON_EMP E
JSON_TABLE(E.EMP_DATA, 'strict $'
COLUMNS( "id..."
当我尝试执行上述查询时,出现错误“An unexpected token “E” was found following “呃”
FROM JSON_EMP ”。预期的标记可能包括:“EXCEPT ”.. SQLCODE=-104,SQLSTATE=42601,DRIVER=4.19.56“
我尝试在 JSON_TABLE 前添加模式 sysibm,但仍然没有成功。我遇到了同样的错误。
文档中此示例中存在许多错误:
-- JSON_TABLE
前没有逗号
-- COLUMN
子句和 SELECT
列表
之间的列名矛盾
下面是一个工作示例:
/*
WITH EMPLOYEE_TABLE (jsondoc) AS
(
VALUES
'
{
"id" : 901,
"firstname" : "John",
"lastname" : "Doe",
"phoneno" : "555-3762"
}
'
)
*/
SELECT U."id", U."firstname", U."lastname", U."phoneno"
FROM
EMPLOYEE_TABLE E
, JSON_TABLE
(
E.jsondoc, 'strict $' COLUMNS
(
"id" INTEGER
, "firstname" VARCHAR(20)
, "lastname" VARCHAR(20)
, "phoneno" VARCHAR(20)
) ERROR ON ERROR
) AS U;
我正在尝试将 Json 数据数组插入 DB2 中的临时 table。我开始知道我可以使用 Json_Table 函数来实现这一点。我为这个函数找到了 2 个语法不同的 link。
有人可以帮忙理解一下它们之间的区别吗?
根据我的用例,我发现 link 1 是 suitable,所以我在 DB2 LUW V11.1/V11.5[=44] 中尝试了该示例=] 环境 我收到语法错误,提示 JSON_Table 无效。 Link 1 中的语法是否在 DB2 LUW V11.1/V11.5 中不受支持?我在这里遗漏了什么吗?
我刚刚从 Link 1 (https://www.ibm.com/support/producthub/db2/docs/content/SSEPGG_11.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0070414.html?pos=2) 中获取示例代码,如下所示
SELECT U."id", U."first name", U."last name", U."phone number"
FROM EMPLOYEE_TABLE E
JSON_TABLE(E.jsondoc, 'strict $'
COLUMNS( "id" INTEGER,
"firstname" VARCHAR(20),
"lastname" VARCHAR(20),
"phoneno" VARCHAR(20))
ERROR ON ERROR) AS U
我收到标记错误,例如“此行有多个标记
- 用于 Linux、UNIX 和 Windows 的 DB2:“
”应该构成一个完整的范围。 - 用于 Linux、UNIX 和 Windows 的 DB2:"U."id", U."first name", U."last name", U."phone 数字” 来自 JSON_EMP E JSON_TABLE(E.EMP_DATA, 'strict $' COLUMNS( "id..."
当我尝试执行上述查询时,出现错误“An unexpected token “E” was found following “呃” FROM JSON_EMP ”。预期的标记可能包括:“EXCEPT ”.. SQLCODE=-104,SQLSTATE=42601,DRIVER=4.19.56“
我尝试在 JSON_TABLE 前添加模式 sysibm,但仍然没有成功。我遇到了同样的错误。
文档中此示例中存在许多错误:
-- JSON_TABLE
前没有逗号
-- COLUMN
子句和 SELECT
列表
下面是一个工作示例:
/*
WITH EMPLOYEE_TABLE (jsondoc) AS
(
VALUES
'
{
"id" : 901,
"firstname" : "John",
"lastname" : "Doe",
"phoneno" : "555-3762"
}
'
)
*/
SELECT U."id", U."firstname", U."lastname", U."phoneno"
FROM
EMPLOYEE_TABLE E
, JSON_TABLE
(
E.jsondoc, 'strict $' COLUMNS
(
"id" INTEGER
, "firstname" VARCHAR(20)
, "lastname" VARCHAR(20)
, "phoneno" VARCHAR(20)
) ERROR ON ERROR
) AS U;