湘潭网小编为大家带来以下内容:
本篇内容介绍了“MySQL中的JSON字段List成员检查实例代码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JSON字段List成员检查方法
JSON_ConTAINS(target, candidate[, path])value MEMBER OF(json_array)查询示例
mysql> set @list = JSON_ARRAY(1, 2);Query OK, 0 rows affected (0.01 sec)mysql> select 1 MEMBER OF(@list);+--------------------+| 1 MEMBER OF(@list) |+--------------------+| 1 |+--------------------+1 row in set (0.00 sec)mysql> SELECT JSON_ConTAINS(@list, '1');+---------------------------+| JSON_ConTAINS(@list, '1') |+---------------------------+| 1 |+---------------------------+1 row in set (0.01 sec)MySQL中JSON字段操作Mysql 自5.7之后增加了很多函数用于处理Json字串。方便实用。
基本改变Json数组:
["abc", 10, null, true, false]Json对象:
{"k1": "value", "k2": 10}JSON数组元素和JSON对象键值内允许嵌套
Json函数JSON_TYPE():返回json字串类型
mysql> SELECT JSON_TYPE('["a", "b", 1]');+----------------------------+| JSON_TYPE('["a", "b", 1]') |+----------------------------+| ARRAY |+----------------------------+ mysql> SELECT JSON_TYPE('"hello"');+----------------------+| JSON_TYPE('"hello"') |+----------------------+| STRING |+----------------------+ mysql> SELECT JSON_TYPE('hello');ERROR 3146 (22032): Invalid data type for JSON data in argument 1to function json_type; a JSON string or JSON type is required.MySQL使用utf8mb4字符集和utf8mb4_bin排序规则处理JSON上下文中使用的字符串 。其他字符集中的字符串将utf8mb4根据需要转换。(对于ascii或 utf8字符集中的字符串,无需进行转换,因为ascii和utf8是的子集utf8mb4。一般将数据库字符集设置为utf8mb4)
JSON_ARRAY():将数值包装为json数组
mysql> SELECT JSON_ARRAY('a', 1, NOW());+----------------------------------------+| JSON_ARRAY('a', 1, NOW()) |+----------------------------------------+| ["a", 1, "2015-07-27 09:43:47.000000"] |+----------------------------------------+JSON_OBJECT():将数值包装为json对象
mysql> SELECT JSON_OBJECT('key1', 1, 'key2', 'abc');+---------------------------------------+| JSON_OBJECT('key1', 1, 'key2', 'abc') |+---------------------------------------+| {"key1": 1, "key2": "abc"} |+---------------------------------------+JSON_MERGE():将多个json合并为一个
mysql> SELECT JSON_MERGE('["a", 1]', '{"key": "value"}');+--------------------------------------------+| JSON_MERGE('["a", 1]', '{"key": "value"}') |+--------------------------------------------+| ["a", 1, {"key": "value"}] |+--------------------------------------------+Json字符串中的key-value访问
使用column-path运算符 ->得到字段中json某个key的值,但是值中的"""和""都会显示,如果不想显示,使用->>。
#创建表CREATE TABLE facts (ids JSON); #插入数据 这里要注意是否启用了服务器SQL模式,插入数据时要注意特殊符号INSERT INTO facts VALUES (JSON_OBJECT('mascot', 'Our mascot is a dolphin named "Sakila".')); #查看数据mysql> select ids from facts;+---------------------------------------------------------+| ids |+---------------------------------------------------------+| {"mascot": "Our mascot is a dolphin named "Sakila"."} |+---------------------------------------------------------+1 row in set (0.00 sec)mysql> SELECt ids->'$.mascot' FROM facts;+---------------------------------------------+| ids->'$.mascot' |+---------------------------------------------+| "Our mascot is a dolphin named "Sakila"." |+---------------------------------------------+1 row in set (0.00 sec) mysql> SELECt ids->>'$.mascot' FROM facts;+-----------------------------------------+| ids->>'$.mascot' |+-----------------------------------------+| Our mascot is a dolphin named "Sakila". |+-----------------------------------------+ #注意,这里访问json字段key使用单引号还是双引号取决于sql模式读取json字段中某个key的值
SELECT JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name');+---------------------------------------------------------+| JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name') |+---------------------------------------------------------+| "Aztalan" |+---------------------------------------------------------+ #去除值双引号mysql> SELECT JSON_UNQUOTE(JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name'));+-----------------------------------------------------------------------+| JSON_UNQUOTE(JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name')) |+-----------------------------------------------------------------------+| Aztalan |+-----------------------------------------------------------------------+小结:
‘$.*’返回全部json‘$.title’返回key=”title”的数据‘$**.text’返回所有最底层key=”text”的数据‘$.content[*].item1[*]’返回key=content的list的key=item1的list的所有内容“MySQL中的JSON字段List成员检查实例代码分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注花开半夏网站,小编将为大家输出更多高质量的实用文章!
君子莲(www.junzilian.com)湖南省长沙、株洲、湘潭城市宣传信息网,提供房产,人才招聘,家居装饰,教育,论坛,旅游,特产,美食,天气,娱乐,企业等资讯。