在尝试以表格式转换 JSON 数据时,如果可以引用外部表列,我找不到任何信息。
一个例子:
-- 为数据创建临时表
create local temporary table #test("StorageId" INT, "Items" nvarchar(200));
--插入1条测试数据
insert into #test("StorageId", "Items")
values(1, '[22,33]');
-- 用于将 json 数据转换为表的查询,其中我从外部表传递 json 列
SELECT e."StorageId"
FROM #test AS e
where 22 in (
select "ItemId" from JSON_TABLE(e."Items", '$[*]' COLUMNS ("ItemId" INT PATH '$'))
)
此查询返回错误:
(dberror)[259]:无效的表名:表不存在> E:
如果我放置数组字符串而不是外部表列,则查询将执行:
select e."StorageId"
from #test AS e
where 22 in (
select "ItemId" from JSON_TABLE('[22,33]', '$[*]' COLUMNS ("ItemId" INT PATH '$'))
)
似乎在内部范围内不知道别名
e
。您可以使用完整的表格参考:
SELECT e."StorageId"
FROM #test AS e
where 22 in (
select "ItemId" from JSON_TABLE(#test."Items", '$[*]' COLUMNS ("ItemId" INT PATH '$'))
)
如果您正在使用 SAP HANA Cloud,我鼓励您查看其 JSON 文档存储,因为它提供了高性能的按数组元素过滤,即使对于大数据量也是如此。