返回顶部
首页 > 资讯 > 数据库 >MySql-使用JSON_REMOVE和JSON_SEARCH删除Json数组数值类型的元素
  • 570
分享到

MySql-使用JSON_REMOVE和JSON_SEARCH删除Json数组数值类型的元素

jsonmysqljava 2023-09-30 18:09:35 570人浏览 独家记忆
摘要

#查询属性值是否挂在sku SELECT * FROM co_sku WHERE JSON_CONTaiNS(common_attributes, CONCAT(SELECT id from co_at

#查询属性值是否挂在sku

SELECT * FROM co_sku WHERE JSON_CONTaiNS(common_attributes, CONCAT(SELECT id from co_attribute_value WHERE value = '10' and attribute_id = 7)) and code = '20515';

#删除sku关联属性值

update co_sku cs join co_attribute_value cav join co_attribute ca on cav.attribute_id = ca.id set cs.update_time=now(), cs.common_attributes = jsON_REMOVE(cs.common_attributes, JSON_UNQUOTE(JSON_SEARCH( REPLACE(REPLACE(REPLACE(JSON_EXTRACT(common_attributes, '$[*]'), ', ', '","'), '[', '["'), ']', '"]'), 'one', cav.id))) where ca.code = 'keyWords' and cav.value = '压取器' and cs.code = '61605';

common_attributes=[80, 242, 24, 2, 4]

解决思路:

第一步:使用JSON_REMOVE把属性id从co_sku的common_attributes(json数组)里删除。

第二步:因为JSON_REMOVE需要根据元素路径去查,所以使用JSON_SEARCH找到属性id在common_attributes的路径path

第三步:使用JSON_EXTRACT查出common_attributes所有的数组元素

第四步:因为JSON_SEARCH里搜索的数组中的元素需要用双引号括起来,而co_sku的common_attributes中数组的元素并没有,因此需要REPLACE将取出来的数组加上双引号。

第五步:因为JSON_REMOVE中的路径不能是双引号,而JSON_SEARCH查出来的路径是有双引号的,因此需要使用JSON_UNQUOTE去除路径中的双引号。

第六步:又因为common_attributes中数组中的元素有可能重复,因此使用JSON_SEARCH的时候,使用one 匹配到第一条就返回,以防返回多条路径。

方法介绍:

JSON_EXTRACT:想要查询出来json中某个字段的值

JSON_EXTRACT(json_doc, path[, path] …)

REPLACE:替换

SELECT REPLACE('www.Mysql.com', 'w', 'Ww');

-> 'WwWwWw.mysql.com'

JSON_SEARCH:指定JSON搜索路径

JSON_SEARCH(json_doc,one_or_all,search_str [,escape_char [,path] ...])

json_doc:要查询的json数据源,列

one_or_all:可选值 one 或者 all ,one 表示匹配到第一条就返回,all表示返回当期匹配到的所有路径,数组

search_str :查询的字符串

JSON_UNQUOTE:去双引号

mysql> SET @j = '"abc"';

mysql> SELECT @j, JSON_UNQUOTE(@j);

| "abc" | abc |

由于json储存的键值是带双引号,查询的字段结果也是带双引号。JSON_UNQUOTE() 函数的作用是去掉引号的功能。或者也可以使用REPLACE ()做替换

JSON_REMOVE:对一个key或多个key从个json记录中去掉

mysql> SET @j = '["a", ["b", "c"], "d"]';

mysql> SELECT JSON_REMOVE(@j, '$[1]');

["a", "d"]

来源地址:https://blog.csdn.net/shauima/article/details/128640408

您可能感兴趣的文档:

--结束END--

本文标题: MySql-使用JSON_REMOVE和JSON_SEARCH删除Json数组数值类型的元素

本文链接: https://lsjlt.com/news/421997.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySql-使用JSON_REMOVE和JSON_SEARCH删除Json数组数值类型的元素
    #查询属性值是否挂在sku SELECT * FROM co_sku WHERE JSON_CONTAINS(common_attributes, CONCAT(SELECT id from co_at...
    99+
    2023-09-30
    json mysql java
  • PHP删除数组中的第一个元素,并返回被删除元素的值
    ...
    99+
    2024-04-02
  • php数组怎么删除指定值的元素
    PHP是一种服务器端脚本语言,对于PHP开发者而言,数组是非常重要的一个数据结构。数组可以将不同类型的数据存储在一个变量中,这种特性非常有用,也非常方便。在某些情况下,我们需要从PHP数组中删除某个特定的值,那么该如何操作呢?PHP数组提供...
    99+
    2023-05-14
    php php数组
  • php数组如何删除指定值的元素
    这篇文章主要介绍“php数组如何删除指定值的元素”,在日常操作中,相信很多人在php数组如何删除指定值的元素问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php数组如何删除指定值的元素”的疑惑有所帮助!接下来...
    99+
    2023-07-05
  • php如何删除数组中重复的元素值
    这篇文章将为大家详细讲解有关php如何删除数组中重复的元素值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php删除数组中重复值的方法:1、使用array_unique()函数,语法“array_uniq...
    99+
    2023-06-14
  • php数组怎么删除某个键值的元素
    在PHP中,数组是一种强大的数据类型,它允许您将多个值存储在一个变量中。数组中的每个值都有一个相应的键,可以使用该键来访问该值。有时候,您可能需要从数组中删除具有特定键的元素。这可以通过使用PHP的内置函数来完成。本文将向您介绍如何使用PH...
    99+
    2023-05-14
    php数组 php
  • php数组怎么删除键值相同的元素
    PHP是一种强大的编程语言,提供各种数组函数,用于操作数组。当我们需要从数组中删除键值相同的元素时,PHP提供了许多解决方案。在这篇文章中,我们将介绍一些常见的方法来删除键值相同的元素。方法一:使用array_unique()函数array...
    99+
    2023-05-14
    php数组 php
  • php数组如何删除某个键值的元素
    本篇内容介绍了“php数组如何删除某个键值的元素”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用unset函数最简单的方法是使用PHP的u...
    99+
    2023-07-05
  • php数组如何删除键值相同的元素
    这篇文章主要介绍了php数组如何删除键值相同的元素的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php数组如何删除键值相同的元素文章都会有所收获,下面我们一起来看看吧。方法一:使用array_unique()函...
    99+
    2023-07-05
  • PHP中怎么使用函数删除数组元素
    这期内容当中小编将会给大家带来有关PHP中怎么使用函数删除数组元素,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。PHP中的数组要添加元素非常简单,直接用赋值就行了,数组的key会自动增加,但是要删除数组中...
    99+
    2023-06-17
  • 使用javascript如何删除数组的指定元素
    使用javascript如何删除数组的指定元素?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。方法1:splice方法//获取元素在数组的下标Array.prototype.in...
    99+
    2023-06-14
  • 使用 update() 和 $pull 从 MongoDB 集合中删除数组元素
    让我们首先创建一个包含文档的集合 -> db.removingAnArrayElementDemo.insertOne({"UserMessage":["Hi","Hello"...
    99+
    2023-10-22
  • 使用Golang删除数组中特定元素的方法
    如何使用Golang删除数组中指定的元素? 在Golang的开发中,经常会遇到需要从数组中删除指定的元素的情况。本文将介绍如何使用Golang的内置函数和切片操作来实现这一目标,并提供具体的代码示例。 Gol...
    99+
    2024-01-24
    删除 Golang 数组
  • 使用PHP中的array_pop()函数来删除数组末尾元素
    PHP中的array_pop()函数用于删除数组的最后一个元素。本文将详细介绍array_pop()函数的使用方法,并提供相关的代码示例。在PHP中,数组是一种非常常用的数据结构,用于存储多个相关的数据。有时候,我们可能需要从数组的末尾删除...
    99+
    2023-11-18
    PHP array_pop 删除元素
  • 怎么在JavaScript中使用splice删除数组元素
    怎么在JavaScript中使用splice删除数组元素?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JavaScript的作用是什么1、能够嵌入动态文本于HTML页面。2、对...
    99+
    2023-06-14
  • js中怎么使用pop方法删除数组元素
    小编给大家分享一下js中怎么使用pop方法删除数组元素,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一...
    99+
    2023-06-14
  • 怎么用PHP删除数组中的指定元素
    这篇文章主要讲解了“怎么用PHP删除数组中的指定元素”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用PHP删除数组中的指定元素”吧!1.使用unset函数unset函数可以删除一个或多个...
    99+
    2023-07-06
  • PHP怎么使用array_search()查找并删除数组中的元素
    可以使用array_search()函数查找数组中的元素并返回其键值,然后使用unset()函数从数组中删除该元素。 以下是一个示例...
    99+
    2024-04-02
  • 【MySQL】MySQL 数据类型,数值、日期和时间、字符串类型,创建数据表,删除数据表
    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 ...
    99+
    2023-08-16
    mysql adb android 后端 数据库
  • 怎么在JavaScript中使用shift()方法删除数组元素
    这期内容当中小编将会给大家带来有关怎么在JavaScript中使用shift()方法删除数组元素,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。javascript是一种什么语言javascript是一种动...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作