db2-luw - DB2 LUW-Json_Table 函数语法错误
问题描述
我正在尝试将 Json 数据数组插入 DB2 中的临时表中。我开始知道我可以使用 Json_Table 函数来实现这一点。我为这个函数找到了 2 个不同语法的链接。
有人可以帮助理解它们之间的区别吗?
根据我的用例,我发现链接 1 是合适的,所以我在DB2 LUW V11.1/V11.5环境中尝试了该示例,我收到语法错误,说 JSON_Table 无效。DB2 LUW V11.1/V11.5是否不支持 Link 1 中的语法?我在这里错过了什么吗?
我只是从链接 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
我收到标记错误,例如“此行有多个标记
- DB2 for Linux, UNIX, and Windows:“<table_expr>”应该构成一个完整的范围。
- DB2 for Linux, UNIX, and Windows:"U."id", U."first name", U."last name", U."phone number" FROM JSON_EMP E JSON_TABLE(E.EMP_DATA, 'strict $' COLUMNS ( “ID...”
当我尝试执行上述查询时,我收到错误,因为“An unexpected token"E” was found following “er” FROM JSON_EMP”。预期的标记可能包括:“EXCEPT”.. SQLCODE=-104、SQLSTATE=42601、DRIVER=4.19。 56"
我尝试使用模式 sysibm 作为 JSON_TABLE 的前缀,但仍然没有运气。我有同样的错误。
解决方案
文档中的此示例中有许多错误:
-- 前面没有逗号--子句和列表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;
推荐阅读
- php - 验证动态选择框
- excel - excel多选选择列表VBA不在密码保护表上运行
- javascript - 使用相同 ID 的多个按钮在站点上仅切换一个显示更多/显示更少按钮
- python - 如何在带有 unicode 字符串的 python 3 代码上使用 pycodestyle
- kubernetes - 如何在本地 Kubernetes 或 OpenShift 集群上运行 Snakemake 工作流程?
- python - 检查给定月份中工作日的第 N 次重复
- .htaccess - 添加到站点的 .htaccessfile 以使 HTTP 站点变为 HTTPS?
- python - kivy:在幻灯片过渡开始时播放声音并在按下按钮时停止
- ios - 如何让 Mapbox 地图完全离线工作?
- sql - 如何限制laravel中每个类别的结果