加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

Mysql查询JSON功效的相干函数汇总

发布时间:2020-12-02 09:56:03 所属栏目:运营 来源:网络整理
导读:这篇文章首要先容了Mysql 查询 JSON 功效的相干函数汇总,辅佐各人更好的领略和行使MySQL,感乐趣的伴侣可以相识下

JSON 名目字段是 Mysql 5.7 新加的属性,不足它本质上以字符串性子生涯在库中的,刚打仗时我只相识 $.xx 查询字段的要领,由于大部门时刻,有这个就够了,其他交给措施就行了,可是最近一些操纵必要更伟大的查询操纵,以是赶忙相识下更多的要领。

JSON_EXTRACT(json_doc [,path])

查询字段

mysql> set @j = '{"name":"wxnacy"}';
mysql> select JSON_EXTRACT(@j, '$.name');
+----------------------------+
| JSON_EXTRACT(@j, '$.name') |
+----------------------------+
| "wxnacy"   |
+----------------------------+

尚有一种更简捷的方法,可是只能在查询表时行使

mysql> select ext -> '$.name' from test;
+-----------------+
| ext -> '$.name' |
+-----------------+
| "wxnacy" |
+-----------------+

在 $. 后可以正常的行使 JSON 名目获取数据方法,好比数组

mysql> set @j = '{"a": [1, 2]}';
mysql> select JSON_EXTRACT(@j, '$.a[0]');
+----------------------------+
| JSON_EXTRACT(@j, '$.a[0]') |
+----------------------------+
| 1    |
+----------------------------+

JSON_DEPTH(json_doc)

计较 JSON 深度,计较方法 {} [] 有一个标记即为一层,标记下稀有据增进一层,伟大 JSON 算到最深的一次为止,官方文档说 null 值深度为 0,可是现实结果并非云云,罗列几个例子

JSON_LENGTH(json_doc [, path])

计较 JSON 最外层可能指定 path 的长度,标量的长度为1。数组的长度是数组元素的数目,工具的长度是工具成员的数目。

mysql> SELECT JSON_LENGTH('[1, 2, {"a": 3}]');
+---------------------------------+
| JSON_LENGTH('[1, 2, {"a": 3}]') |
+---------------------------------+
|    3 |
+---------------------------------+
mysql> SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}');
+-----------------------------------------+
| JSON_LENGTH('{"a": 1, "b": {"c": 30}}') |
+-----------------------------------------+
|     2 |
+-----------------------------------------+
mysql> SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b');
+------------------------------------------------+
| JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b') |
+------------------------------------------------+
|      1 |
+------------------------------------------------+

JSON_TYPE(json_doc)

返回一个utf8mb4字符串,指示JSON值的范例。 这可所以工具,数组或标量范例,如下所示:

mysql> SET @j = '{"a": [10, true]}';
mysql> SELECT JSON_TYPE(@j);
+---------------+
| JSON_TYPE(@j) |
+---------------+
| OBJECT |
+---------------+
mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a'));
+------------------------------------+
| JSON_TYPE(JSON_EXTRACT(@j, '$.a')) |
+------------------------------------+
| ARRAY    |
+------------------------------------+
mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]'));
+---------------------------------------+
| JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]')) |
+---------------------------------------+
| INTEGER    |
+---------------------------------------+
mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]'));
+---------------------------------------+
| JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]')) |
+---------------------------------------+
| BOOLEAN    |
+---------------------------------------+

也许的返回范例

纯JSON范例:

OBJECT:JSON工具

ARRAY:JSON数组

BOOLEAN:JSON真假笔墨

NULL:JSON null笔墨

数字范例:

INTEGER:MySQL TINYINT,SMALLINT,MEDIUMINT以及INT和BIGINT标量

DOUBLE:MySQL DOUBLE FLOAT标量

DECIMAL:MySQL DECIMAL和NUMERIC标量

时刻范例:

DATETIME:MySQL DATETIME和TIMESTAMP标量

日期:MySQL DATE标量

TIME:MySQL TIME标量

字符串范例:

STRING:MySQL utf8字符范例标量:CHAR,VARCHAR,TEXT,ENUM和SET

二进制范例:

BLOB:MySQL二进制范例标量,包罗BINARY,VARBINARY,BLOB和BIT

全部其他范例:

OPAQUE(原始位)

JSON_VALID

返回0或1以指示值是否为有用JSON。 假如参数为NULL,则返回NULL。

mysql> SELECT JSON_VALID('{"a": 1}');
+------------------------+
| JSON_VALID('{"a": 1}') |
+------------------------+
|   1 |
+------------------------+
mysql> SELECT JSON_VALID('hello'), JSON_VALID('"hello"');
+---------------------+-----------------------+
| JSON_VALID('hello') | JSON_VALID('"hello"') |
+---------------------+-----------------------+
|   0 |   1 |
+---------------------+-----------------------+

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读