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 | +---------------------+-----------------------+ (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|