DB2 LUW-Json_Table 函数语法错误

DB2 LUW-Json_Table function Syntax errors

我正在尝试将 Json 数据数组插入 DB2 中的临时 table。我开始知道我可以使用 Json_Table 函数来实现这一点。我为这个函数找到了 2 个语法不同的 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

  2. https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.5.0/com.ibm.swg.im.dbclient.json.doc/doc/r0070289.html

根据我的用例,我发现 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;