腾讯云数据仓库 TCHouse-P json/jsonb 的使用

TBase 不只是一个分布式关系型数据库系统,同时它还支持非关系数据类型 json。JSON 数据类型是用来存储 JSON(JavaScript Object Notation) 数据的。这种数据也可以被存储为 text,但是 JSON 数据类型的 优势在于能强制要求每个被存储的值符合 JSON 规则。也有很多 JSON 相关的函数和操作符可以用于存储在这些数据类型中的数据。JSON 数据类型有 json 和 jso。

相关产品
腾讯云数据仓库 TCHouse-P 产品页,含版本规格、价格与购买入口。

二、创建 json 类型字段表

“`sqlcreate table t_json(id int,f_json json);

三、插入数据

insert into t_json values(1,'{"col1":1,"col2":"tbase"}');insert into t_json values(2,'{"col1":1,"col2":"tbase","col3":"pgxz"}');

四、通过键获得 JSON 对象域

select f_json ->'col2' as col2 ,f_json -> 'col3' as col3 from t_json;

col2 col3
"tbase" 
"tbase" "pgxz"

五、以文本形式获取对象值

select f_json ->>'col2' as col2 ,f_json ->> 'col3' as col3 from t_json;

col2 col3
tbase 
tbase pgxz

八、创建 jsonb 类型字段表

create table t_jsonb(id int,f_jsonb jsonb);

九、插入数据

insert into t_jsonb values(1,'{"col1":1,"col2":"tbase"}');insert into t_jsonb values(2,'{"col1":1,"col2":"tbase","col3":"pgxz"}');

·jsonb 插入时会移除重复的键。

十、更新数据

·增加元素

update t_jsonb set f_jsonb = f_jsonb || '{"col3":"pgxz"}'::jsonb where id=1;

·更新原来的元素

update t_jsonb set f_jsonb = f_jsonb || '{"col2":"tbase"}'::jsonb where id=3;

·删除某个键

update t_jsonb set f_jsonb = f_jsonb – 'col3';

十一、jsonb_set()函数更新数据

update t_jsonb set f_jsonb = jsonb_set( f_jsonb , '{col}', '"pgxz"' , true ) where id=1;update t_jsonb set f_jsonb = jsonb_set( f_jsonb , '{col}', '"pgxz"' , false ) where id=2;update t_jsonb set f_jsonb = jsonb_set( f_jsonb , '{col2}', '"pgxz"' , false ) where id=3;

十三、jsonb_each() 将 json 对象转变键和值

select * from jsonb_each((select f_jsonb from t_jsonb where id=1));

key value
col "pgxz"
col1 1
col2 "tbase"

十四、jsonb_each_text() 将 json 对象转变文本类型的键和值

select * from jsonb_each_text((select f_jsonb from t_jsonb where id=1));

key value
col pgxz
col1 1
col2 tbase

十五、row_to_json() 将一行记录变成一个 json 对象

select row_to_json(tbase) from tbase;

{"id":1,"nickname":"tbase"}{"id":2,"nickname":"pgxz"}

十六、json_object_keys()返回一个对象中所有的键

select * from json_object_keys((select f_jsonb from t_jsonb where id=1)::json);

json_object_keys
col
col1
col2

十八、jsonb 索引使用

TBase 为文档 jsonb 提供了 GIN 索引,GIN 索引可以被用来有效地搜索在大量 jsonb 文档(数据)中出现的键或者键值对。

十九、创建立 jsonb 索引

create index t_jsonb_f_jsonb_idx on t_jsonb using gin(f_jsonb);

20、测试查询的性能

·没有索引开销

select * from t_jsonb where f_jsonb @> '{"col1":9999}';

·有索引开销

select * from t_jsonb where f_jsonb @> '{"col1":9999}';

赞 (0)
上一篇 4天前
下一篇 4天前