我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中的JSON字段List成员检查

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中的JSON字段List成员检查

JSON字段List成员检查

文档

  • https://dev.mysql.com/doc/refman/8.0/en/json.html
  • https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html

方法

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 1
to 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的所有内容

官网参考地址

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中的JSON字段List成员检查

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中查询json格式的字段实例详解

工作开发过程遇到一个需求:需要动态存储客户的姓名、手机号码、身份证、证件类型,意思是可能前端会传一个人或二个人或者三个人的信息是动态的不固定人数的四个字段(姓名、手机号码、身份证、证件类型)。 前端页面如下:我是使用List来接收前端传过来
2022-05-14

MySQL中json字段的操作方法

MySQL5.7.8中引入了json字段,这种类型的字段使用的频率比较低,但是在实际操作中,有些业务仍然在用,我们以此为例,介绍下json字段的操作方法: 还是从例子看起:mysql> create table test1(id in
2022-05-31

mysql中取出json字段的小技巧

目录mysql取出json字段技巧mysql中使用函数JSON_EXTRACT()spark sql中使用get_jsoLfCBTJn_object()mysql取json,在不知道key情况下,取他的value详细值mysql取出json
2022-07-05

Mysql中JSON字段的值的实现示例

我们在查询mysql数据时,查询某个字段的数剧是我们经常接触的,直接使用sql语句或者更方便的直接使用数据库的orm语句查询。但是如果需要查询某个json字段里面的某些数据,orm模型可能都无法达到效果,还不如直接使用sql语句进行查询来的
Mysql中JSON字段的值的实现示例
2024-09-11

MySQL更新存放JSON的字段、\“ 转义成 “的问题描述

目录问题描述问题排查解决方案本篇介绍在执行mysql线上变更时遇到的问题,表现为"更新jsON字段时,实际更新的值与SQL语句中的值不一致,JSON格式错误",如下;问题描述处理线上问题,需要新插入一条记录;将原JSON粘贴出来,修改部
2022-12-20

MySQL更新存放JSON的字段、\“转义成“的问题描述

本篇介绍在执行MySQL线上变更时遇到的问题,表现为"更新JSON字段时,实际更新的值与SQL语句中的值不一致,JSON格式错误",本文给大家分享问题描述及解决方案,感兴趣的朋友一起看看吧
2022-12-20

sql怎么查询json字段中的key是否存在

在SQL中,可以使用JSON函数来查询JSON字段中的key是否存在。下面是一个例子,假设有一个名为`data`的JSON字段,其中包含一个键值对`{"key": "value"}`:```sqlSELECT data->'key' IS
2023-08-25

sql怎么查询json字段中的key是否存在

JSON数据库查询中的键检查了解如何在MySQL、PostgreSQL、Oracle、SQLServer和SQLite中使用JSON查询功能检查JSON文档中的特定键是否存在。涵盖JSON_CONTAINS()、JSONB_HAS_KEY()、JSON_VALUE()等函数,以及->、#>>等运算符,用于高效的数据检索。
sql怎么查询json字段中的key是否存在
2024-04-13

mysql中json类型字段的基本用法实例

目录前言基本环境jsON类型字段常用操作插入JSON类型数据查询JSON类型数据更新JSON类型数据中的特定字段匹配JSON类型数据中的特定字段结语前言mysql从5.7.8版本开始原生支持了JSON类型数据,同时可以对JSON类型字段中
2022-08-12

编程热搜

目录