Mysql中如何截取json字符串中指定片段再对其进行模糊查询--SUBSTRING_INDEX(s, delimiter, number)函数的实战运用

2023-11-11

应用场景,给你一个表单信息的字符串,如下:

//数据1
{"checkbox_1611194769273":["Option 1","Option 2"],"checkbox_1611194771312":["Option 2","Option 3"]}
//数据2
{"checkbox_1611194769273":["Option 1"],"checkbox_1611194771312":["Option 2"]}
//数据3
{"checkbox_1611194769273":[],"checkbox_1611194771312":["Option 1","Option 2"]}
//数据4
{"checkbox_1611194769273":["Option 1"],"checkbox_1611194771312":[]}

checkbox表示复选框,checkbox_xxx表示不同的复选框,现在需要筛选出,指定复选框勾选Option 1的所有数据?

解答:由于表单是动态的表单,会有很多不同的组件,复选框只是其中之一,生产的数据要比上面例子复制百倍,所有我们的思路是

1.先定位到筛选目标的复选框的数据片段

2.再截取出来其中的数据

3.最后再熊截取的数据中进行模糊查询

这里我们需要使用mysql的SUBSTRING_INDEX(s, delimiter, number)函数。

先举个简单的例子:

//这里表示从目标字符串'a*b*c*d*e'中,正着数第3个'*',截取其左边的字符串
select SUBSTRING_INDEX('a*b*c*d*e','*',3);
//结果为:
a*b*c

//这里表示从目标字符串'a*b*c*d*e'中,倒着数第1个'*',截取其右边的字符串
select SUBSTRING_INDEX('a*b*c','*',-1);
//结果为:
c

//这里表示从目标字符串'a*b*c*d*e'中,倒着数第3个'*',截取其左边的字符串,然后再从截取的字符串中,倒着数第2个'*',截取其右边的字符串
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a*b*c*d*e','*',3),'*',-2);
//结果为:
b*c

简单的了解了一下用法之后,我们再回到实战问题:

//1.定位到复选框checkbox_1611194769273
select substring_index(t.DATA,'checkbox_1611194769273',-1) from FORM_DATA t

结果为: 

这里是把复选框id右边所有字符都截取出来了。

//再以第一个右中括号‘]’,向左截取字符串
select substring_index(substring_index(DATA, 'checkbox_1611194769273', - 1), ']', 1)
from FORM_DATA t;

结果为:

至此已经把复选框中的字符串搜索出来了,最后只要加上模糊查询即可:

select * from FORM_DATA where 
substring_index(substring_index(DATA, 'checkbox_1611194769273', - 1), ']', 1) 
like '%Option 1%';

结果为: 

好了,查出需要的数据啦,大功告成!

 

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql中如何截取json字符串中指定片段再对其进行模糊查询--SUBSTRING_INDEX(s, delimiter, number)函数的实战运用 的相关文章

  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • 免费 PHP 登录库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Mysql 将 int 转换为 MAC

    我有一些数据可以转换 其中有 2 列 其中一列有 IP 它包含整数值 我在 mysql 查询中使用了以下函数 是否有一个函数可以用来转换我的 mac 列 其中包含整数和数据类型是bigint to MAC地址 SELECT INET NTO
  • 如何使用 Perl 更改 mysql 密码

    我需要使用 Perl 脚本更改一些 mysql 密码 以下内容在更改数据库条目时有效 但是当我针对 mysql 用户更改修改它时 它将它们重置为空白密码 最后 刷新权限 也很好 但我还没有找到方法 usr bin perl use DBI
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • Mysql 时间匹配连接

    我有两个表cpuinfo和jobinfo 我想使用这两种数据创建报告 tabes CREATE TABLE cpuinfo id int 11 NOT NULL AUTO INCREMENT usagetime datetime DEFAU
  • MySQL:计算日期/时间之间的差异 - 仅在周一至周五“工作周”期间

    我需要计算开始日期 时间和结束日期 时间之间的差异 但是 我只想在 5 天的工作周内执行此操作 不包括周六 周日 做这个的最好方式是什么 我的想法是 从日期开始 我必须获取星期几 如果是工作日 那么我将添加到累加器中 如果不是 那么我不会添
  • 在mysql中的单个查询中更新多个表

    我有三个查询 我想要一个 这是我的查询 UPDATE tab1 SET a WHERE id 3 UPDATE tab2 SET b WHERE id 9 UPDATE tab3 SET c WHERE id 5 您可以尝试下面的代码 UP
  • MySQL - 从临时表插入

    这看起来非常简单 但我坚持使用简单的插入语句 见下文 begin work CREATE TEMPORARY TABLE IF NOT EXISTS insert table AS select r resource id fr file
  • MySql 5.7 ORDER BY 子句不在 GROUP BY 子句中并且包含非聚合列

    我试图在不禁用 my ini 中的 only full group by 的情况下弄清楚 这是我的查询 SELECT p title COUNT t qty AS total FROM payments t LEFT JOIN produc
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • mysql转储到derby

    我正在使用 derby 在 eclipse 中进行开发 是否可以从 MySQL 转储表并以某种方式将其用于 derby 我知道 ddl 和 dml 对于两个 dbms 来说是不同的 但我正在寻找一种除了转储 导出之外的合适方法 我可以找到两
  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • 慢速自动增量重置

    我有很多表 由于某些原因 我需要在应用程序启动时调整这些表的自动增量值 我尝试这样做 mysql gt select max id from item max id 97972232 1 row in set 0 05 sec mysql
  • mysql 中的二进制、十六进制和八进制值

    我对在 mysql 数据库中使用二进制 十六进制和八进制系统非常感兴趣 首先 请给我一个建议 为什么我们在存储信息时需要它们 因为信息太多 或者为什么 另外 哪种类型的值必须存储在标记系统中 另外这里还有像 这是例子 gt SELECT 5

随机推荐

  • 移动电源/充电管理设计

    移动电源 充电管理设计 简述 伴随着智能手机的兴起 智能手机的续航成了较大的问题 因此移动电源 充电宝 成为不时之需 而近来的各类无线耳机的兴起 无线耳机的续航又成为新的问题 为此针对无线耳机充电的各大厂商又一次成为热门 而这些都需要类似于
  • Windows11如何使用安卓子系统的Amazon Appstore

    这个月更新了Windows11以后 已经可以在微软应用商店下载安卓子系统并且安装安卓应用了 但是安卓子系统默认使用的是亚马逊的Amazon Appstore 目前这个商店只限制在美国使用 如果直接打开的话会提示Amazon AppStore
  • python学习日记【13 - 面向对象三】

    面向对象三 继承简介 方法重写 super 多重继承 多态 属性和方法 继承简介 继承是面向对象三大特性之一 通过继承我们可以使一个类获取到其他类中的属性和方法 在定义类时 可以在类名后面的括号中指定当前类的父类 超类 基类 继承提高了类的
  • 拥抱你的zsh,Linux下速通zsh&oh-my-zsh配置(附常用插件&主题)

    zsh oh my zsh配置 为什么要使用zsh 功能强大插件 丰富酷炫的主题 对bash完全兼容 这意味着与bash语法一致 功能更 健全 的Tab补全 代码高亮 相信你在阅读完本文以及用上zsh一段时间过后之后 可能并不需要很久 能对
  • 移动端适配方案之postcss-px-to-viewport

    之前做移动端适配时 基本上是采用rem方案 现在发现了一个新的方案 就是用viewport单位 现在viewport单位越来越受到众多浏览器的支持 postcss px to viewport 将px单位自动转换成viewport单位 用起
  • linux 消息队列状态:struct msqid_ds

    Linux的消息队列 queue 实质上是一个链表 它有消息队列标识符 queue ID msgget创建一个新队列或打开一个存在的队列 msgsnd向队列末端添加一条新消息 msgrcv从队列中取消息 取消息是不一定遵循先进先出的 也可以
  • 斐波那契数列应用——有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    以下一道常见的关于斐波那契数列的算法题 发现python的解法比较少 特此分享一下 首先从题目分析 得出以下结论 1 最初一对兔子是一公和一母 2 兔子三个月就能生育 3 后续生下来的兔子很标准的一夫一妻制 但是有近亲繁殖的问题 细思极恐
  • 最好用的五个黑科技搜索引擎推荐

    一 数据搜 http data chongbuluo com 数据搜 这个网站就是搜索一些热词和数据指数的 包括百度指数 阿里指数 微博指数 微信指数 搜狗指数等等 当然 还有一些汽车数据 腾讯大数据 票房数据相关数据查询网站 估计很多人经
  • 多输入多输出

    多输入多输出 MATLAB实现CNN LSTM卷积长短期记忆神经网络多输入多输出 目录 多输入多输出 MATLAB实现CNN LSTM卷积长短期记忆神经网络多输入多输出 预测效果 基本介绍 程序设计 往期精彩 参考资料 预测效果 基本介绍
  • H.264 入门篇 - 10 (帧间预测 - 参考帧列表修改/重排)

    目录 0 写在前面 1 参考帧列表修改 重排 1 1 短期参考帧的修改 1 1 1 计算 picNumLXPred 1 1 2 计算 picNumLXNoWrap 1 1 3 计算 picNumLX 1 1 4 修改参考帧列表 1 2 长期
  • redis与memcache区别

    一 redis与memcache总体对比 1 性能 Redis 只使用单核 平均每一个核上Redis在存储小数据时比Memcached性能更高 Memcached 可以使用多核 而在100k以上的数据中 Memcached性能要高于Redi
  • 开源程序识别图像像素点_开源浏览器扩展程序,可放大图像

    开源程序识别图像像素点 您是否曾经浏览过网站并希望看到更大的图像 这无时无刻不在我身上发生 要做到这一点并不总是那么容易 有时 我在源代码中进行筛选 使用Ctrl F搜索图像 复制图像源地址并将其粘贴到新窗口中 以便以全尺寸查看图像 或者
  • 深度优先遍历(DFS)和广度优先遍历(BFS)

    深度优先遍历和广度优先遍历 1 深度优先遍历 DFS 2 广度优先遍历 BFS 3 DFS与BFS算法比较 深度优先遍历简称DFS Depth First Search 广度优先遍历简称BFS Breadth First Search 它们
  • 【Linux】Linux安装搜狗输入法

    Linux安装搜狗输入法 1 安装Fcitx sudo apt install fcitx bin sudo apt get install fcitx table 2下载搜狗输入法 下载地址为 http pinyin sogou com
  • MySQL主从复制配置

    主从同步原理 准备两台机器 master 192 168 44 121 slave 192 168 44 128 如果用clone的方式得到两个MySQL服务 需要注意的地方 不同机器的UUID不能重复 否则IO线程不能启动 find na
  • Charles--01--安装和使用

    文章目录 前言 安装和破解 安装 破解 使用 连接 1 电脑端连接 2 手机端连接 问题 如何捕获本地 localhost 数据 产生原因 解决方法 前言 Charles是一款代理服务器 通过过将自己设置成系统 电脑或者浏览器 的网络访问代
  • 面向对象的语言

    面向对象的语言 面向过程和面向对象的设计思想 面向过程 procedure oriented programming 缩写POP 分析出解决问题所需的步骤 然后把步骤一部哟不实现 面向对象语言 Object Oriented Languag
  • IT项目管理大作业技术报告

    大作业项目中承担的角色 第一次团队作业项目前期研究 第一个是 中大人IT生活攻略 描述目前应用情况 另一个是 中大人的移动生活攻略 描述Program实现后的美好生活 第二次团队作业调查与研究 云或移动项目管理服务软件 竞品分析 调查Wor
  • 通过PIL打开图片并显示

    输入 from PIL import Image import matplotlib pyplot as plt pil im Image open 1 jpg pil im Image open 1 jpg convert L 灰度操作
  • Mysql中如何截取json字符串中指定片段再对其进行模糊查询--SUBSTRING_INDEX(s, delimiter, number)函数的实战运用

    应用场景 给你一个表单信息的字符串 如下 数据1 checkbox 1611194769273 Option 1 Option 2 checkbox 1611194771312 Option 2 Option 3 数据2 checkbox