达梦数据库DM8(二十)

430 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情

生命不息,学习不止

题外话

人类优于其他物种的一个重要方面是人类学会了思考,所以说在人类的进化道路上,思考是举足轻重的,为了防止大家小脑袋瓜锈住,我打算每天出一道题让大家好好的思考一下。

每日一题:郑和下西洋的故事我们都听说过,,郑和最终也死在了下西洋的过程中,那么郑和七次下西洋,他死在了那次呢?

废话不多说,上货!

正文

在这里插入图片描述

上回拿了一个例子详细的讲解达梦数据库json格式对布尔类型的支持,今天就来说说达梦数据库json对null的支持。

null

json中的null和sql中的null是有所区别的,json中null可作为值,也可作为名称,同样null也受is json(strict) 与 is json(lax) 的限制。

但是null作为名称还是少用的好,null作为比较特殊的字符,如果用null作为名称,查询语句必须是小写才能返回对应值。

下面我们举个例子来掩饰一下。

还是创建一个json表json_text

创建语句如下:

create table json_text( key int,

value1 varchar2(100) CHECK ( value1 IS JSON)

);

然后我们插入几条null值数据,插入语句如下

  insert into json_text values(1,null);			--SQL语句的null

  insert into json_text values(2,'{"val":null}');	--json数据的null

  insert into json_text values(3,NULL);		        --SQL语句的null

  insert into json_text values(4,'{"val":NULL}');	--json数据的null

  commit;

然后我们分别使用json_value和json_query查询相应数据,看看对json中null值得影响

执行select json_value(value1, '$.val') from json_text; 结果如下

截图_20222216032236.png

执行 select json_query(value1, '$.val' WITH WRAPPER) from json_text; 结果如下

截图_20222516032543.png

可以看出使用json_value查询时无法区分是否为json格式数据,而使用json_query时必须指定WITH WRAPPER的发布会形式才能确定其是否为json格式

不指定WITH WRAPPER返回值与json_value 相同

下一篇我们讲讲达梦数据库json相关的函数及其使用。

在这里插入图片描述

大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划! 在这里插入图片描述