admin 管理员组

文章数量: 1086019


2024年4月13日发(作者:case与switch)

DM中处理JSON文本的方法

JSON是基于纯文本的轻量级数据交换格式,在web应用端有广泛的应用。在DM中JSON

数据以字符串类型储存,可以支持对于要存入的JSON数据格式的正确性检查,存储JSON

数据并提供函数对于JSON文本进行查询。下面用几个例子来说明在DM中操作JSON文

本的方法。

创建TEST1表并在TEST1表中存储JSON文本,INFO列的数据类型需要为字符类型,

可以选择varchar、varchar2、char、clob等作为储存字段的数据类型。

create table TEST1 (INFO varchar(100));

insert into TEST1 values ('{"db_name":"DM","version":8}');

select * from TEST1;

对于储存下来的JSON数据,DM提供了函数json_value和json_query对于JSON文本中

的值进行查询。现运用json_value函数查询键为db_name所对应的值。使用函数json_value

必须给定两个参数,第一个为查询表中的列名,第二个为查找值的路径表达式。在路径中

array对象和object对象必须以“$”开头。

select json_value(INFO,'$.db_name') from TEST1;

通过查询可以获取到db_name所对应的值为“DM”。除了如上例中object对象外,DM还可

以存储array对象并查询array中的值。数组的下标从0开始,利用“[下标]”的方式可以查找

到对应的值。

create table TEST2 (INFO char(100));

insert into TEST2 values ('["DAMENG",8,true,null]');

select * from TEST2;

select json_value(INFO,'$[0]') from TEST2;

对于需要储存的数据检查其是否为json文本,可以加入IS JSON条件进行判断。可以在建

表的过程中加入到检查约束中进行判断,也可以在插入数据时添加条件,对于插入的数据进

行筛选。

create table TEST3(ID int,INFO varchar(100) constraint json_check

check (INFO is json));

insert into TEST3 values (1,'{"db_name":"DM","version":8}');

符合json数据格式的值会被存储下来,而错误的格式在插入数据时不能满足IS JSON的检

查约束,会提示“违反CHECK约束[JSON_CHECK]。”

insert into TEST3 values (2,'{"db_name":"DM","version":8,????:!!!!}');

insert into TEST3 values (3,'DAMENG');

如果不添加约束,也可以在条件中筛选json格式的数据,例如在下面的示例中我们创建

TEST4表,并插入四行数据,其中两行符合json数据的合法性。

create table TEST4(ID int,INFO varchar(100));

insert into TEST4 values (1,'{"db_name":"DM","version":8}');

insert into TEST4 values

(2,'{"db_name":"DM","version":8,????:!!!!}');

insert into TEST4 values (3,'DAMENG');

insert into TEST4 values (4,'["DAMENG",8,true,null]');

而在创建TEST5表的时候在where子句中带上对于json数据的检查条件,可以仅将符合


本文标签: 数据 检查 查询 进行 文本