mysql-json学习记录

mysql从5.7.8版本后支持json格式数据。

一文说透 MySQL JSON 数据类型(收藏) - 知乎

MySQL :: MySQL 8.0 Reference Manual :: 14.17 JSON Functions

拆分json对象:

JSON_EXTRACT(jsonStr_column, '$.key') 
jsonStr_column->'$.key'

获取存粹的json字段数据

JSON_UNQUOTE(JSON_EXTRACT(jsonStr_column, '$.key') )
jsonStr_column->>'$.key'

拆分json集合

数据:
[{"id": 1, "name": "Tom"}, {"id": 2, "name": "Jerry"}] 


拆分语句:
 JSON_TABLE(details, '$[*]' 
         COLUMNS (
             id   INT   PATH '$.id',
             name VARCHAR(255) PATH '$.name'
         )

虚拟列

MYSQL JSON数据类型详解-CSDN博客

在MySQL中,虚拟列有两种形式:VIRTUAL 和 STORED

  1. VIRTUAL列:此类列的值在被访问时动态生成,不会物理存储在记录中,也不会占用任何磁盘空间。它们相当于视图,但是应用在单个表的列级别。
  2. STORED列:与VIRTUAL列不同,STORED列在表被修改时物理保存其值。它们在磁盘上占用空间,但有利于提高读取数据的性能,因为不需要在数据被访问时再计算值。
 virtual_column_name data_type GENERATED ALWAYS AS (expression) [VIRTUAL,STORED]
price DECIMAL(10, 2_value DECIMAL(10,2) GENERATED ALWAYS AS (price * quantity)

生成json对象

json_object('name', 'name123', 'code', 'code123')

判定json中的字段为null

json_type(JSON_EXTRACT(jsonStr_column, '$.key') ) = 'NULL'

判断json中是否包含某个字段

JSON_CONTAINS_PATH() 是MySQL中的一个JSON函数,这个函数用来检测指定的JSON文档中是否包含指定路径下的值。

这个函数接收最少三个参数:

  1. 第一个参数是JSON文档
  2. 第二个参数是一个字符串,定义了是否所有的路径都需要存在。可以是 ‘one’ 或 ‘all’, ‘one’ 表示只要有任意一个路径存在就返回 1,‘all’ 表示所有路径都必须存在才返回 1
  3. 第三个参数及以后的参数,是你要检测的路径字符串。

例如,我们有一个名为 json_data 的列包含以下JSON数据:

{
  "id": 1,
  "name": "John Doe",
  "address": {
    "street": "10 Downing Street",
    "city": "London"
  },
  "phones": ["123456", "789012"]
}

我们可以使用下面的SQL来检查 address.street 和 address.postcode 是否存在:

SELECT JSON_CONTAINS_PATH(json_data, 'all', '$.address.street', '$.address.postcode') AS result
FROM json_table;

上面的语句将会返回 0,因为 address.postcode 路径不存在。

注意,路径是大小写敏感的,并且路径的层数可以是多层的。例如 $ 表示JSON文档的顶层,$.address.street 表示 address 对象中的 street 成员。

另外一种方式判断不存在该字段:

json_type(JSON_EXTRACT(jsonStr_column, '$.key') ) is null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL中,可以使用以下语句创建包含JSON数据类型的表: ``` create table tab_json( id bigint not null auto_increment, data json, primary key(id) ); ``` 这个语句创建了一个名为`tab_json`的表,其中包含了一个`id`字段和一个`data`字段,`data`字段的类型是JSON。\[1\] 需要注意的是,JSON字段不能包含默认值,所以在创建表时不能给`data`字段设置默认值。如果尝试给JSON字段设置默认值,会出现错误信息。\[1\] 要向JSON数据类型中插入数据,可以使用以下语句: ``` insert into tab_json values (null, '{"name":"david","address":"Beijing","Tel":"132223232444"}'); ``` 这个语句将一条包含JSON数据的记录插入到`tab_json`表中。\[2\] 需要注意的是,插入的JSON数据必须是有效的JSON格式,否则会出现错误。例如,如果插入的JSON数据中有多个相同的键,或者JSON数据格式不正确,都会导致插入失败。\[2\] JSON类型是从MySQL 5.7版本开始引入的功能,但在MySQL 8.0版本中解决了更新JSON的日志性能问题。如果要在生产环境中使用JSON数据类型,建议使用MySQL 8.0版本。\[3\] #### 引用[.reference_title] - *1* *2* [mysql中,创建包含json数据类型的表?创建json表时候的注意事项?查询json字段中某个key的值?...](https://blog.csdn.net/weixin_33851429/article/details/94113289)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Mysql学习-第一章(表设计JSON类型)](https://blog.csdn.net/tangshuai96/article/details/117110329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值