我一直在尝试在另一个对象列中的对象列中添加一列但不能这样做(对于嵌套对象)。
在对象内添加列是直截了当的。如何在深度为一级(或N级深)的嵌套对象中添加列?
create table my_table (name string, age integer, book object as (isbn string));
示例行:{"age": 34, "book": {"isbn": "1"}, "name": "my_name"}
我试图添加一个对象列' author'内部book对象列,但以下alter语句失败
alter table my_table add column person['book['author']'] object as (authorId as integer)
alter table my_table add column person['book']['author'] object as (authorId as integer)
alter table my_table add column person['book[author]'] object as (authorId as integer)
alter table my_table add column person[book['author']] object as (authorId as integer)
在嵌套对象中添加列的正确语法是什么?
亲切的问候。
答案 0 :(得分:1)
以这种形式访问嵌套对象:
select obj['level1']['level2']['level3']
等等。
所以alter table语句看起来像你的第二个例子,但是没有“as integer”:
alter table my_table add column book['person']['author'] object as ("authorId" integer);
(请注意,authorId用双引号来保留大小写,没有它就会全部小写)
或者也可以使用稍微不同的语法来完成相同的操作:
alter table my_table add column book['person']['author']['authorId'] integer;