很多时候,我们需要在sql里面直接解析json字符串。这里针对mysql5.7版本的分水岭进行区分。

1.对于mysql5.7以上版本

使用mysql的内置函数JSON_EXTRACT(column, '$.key'),这个函数有两个参数,第一个参数column代表json列的列名;第二个参数key代表json字符串中的某一个key。

SELECT JSON_EXTRACT('{"priceTag":"员工/合作关键人","priceDiscount":"90"}', '$.priceDiscount') AS '定价折扣';

对于简单的json字符串肯定是可以解析成功,但是对于嵌套数组的没试过。

2.对于mysql5.7以下版本

只能充分发挥已有函数的功能去截取实现,无论实现方式是存储过程还是简单的sql语句,其原理都是一样的。

第一步,将所有的花括号的闭括号'}'替换成英文逗号',';第二步,获取key的坐标keyIndex和长度keyLength;第三步,获取以key为起点,第一个英文逗号','的坐标symbolIndex;第四步,使用substring截取字符串SUBSTRING(targetJsonStr, keyIndex + keyLength, symbolIndex - keyIndex - keyLength);第五步,使用replace将双引号'"'替换成空字符串'',完工。

示例:从{"priceTag": "员工/合作关键人","priceDiscount": "90"}中获取priceDiscount的值。

SELECT REPLACE

(

SUBSTRING(

REPLACE('{"priceTag":"员工/合作关键人","priceDiscount":"90"}','}',','),

LOCATE('priceDiscount":',REPLACE('{"priceTag":"员工/合作关键人","priceDiscount":"90"}','}',','))+CHAR_LENGTH('priceDiscount":'),

LOCATE(

',',

REPLACE('{"priceTag":"员工/合作关键人","priceDiscount":"90"}','}',','),

LOCATE('priceDiscount":',REPLACE('{"priceTag":"员工/合作关键人","priceDiscount":"90"}','}',',')) + CHAR_LENGTH('priceDiscount":')

) - (LOCATE('priceDiscount":',REPLACE('{"priceTag":"员工/合作关键人","priceDiscount":"90"}','}',',')) + CHAR_LENGTH('priceDiscount":'))

),'"',''

) AS '定价折扣';

2.0mysql解析简单json字符串

以上就是mysql解析json字符串的实现,谢谢。

mysql解析json_mysql解析简单json字符串相关推荐

  1. jsp java json解析,jsp中获取json字符串,并解析

    JqueryDemo1 function showData() { var str='{ "name": "John" }';//json标准格式 var ob ...

  2. android中解析后台返回的json字符串

    普通形式的: 服务器端返回的json数据格式如下: {"userbean":{"Uid":"100196","Showname&q ...

  3. MySQL里面json_MySQL中的JSON

    MySQL 5.7.7开始,支持了JSON类型.CREATE TABLE IF NOT EXISTS `spss`.`variable` ( `name` VARCHAR(512) NOT NULL, ...

  4. c语言json 5c,C++的简单JSON字符串转义?

    mariolpantun.. 6 我写了一个简单的JSON转义和非转义函数.该代码在GitHub中公开.对于这里感兴趣的人是代码: enum State {ESCAPED, UNESCAPED}; s ...

  5. cjson构建_[置顶] cJSON库(构建json与解析json字符串)-c语言

    一.c语言获取json中的数据. 1.先要有cJOSN库,两个文件分别是cJSON.c和cJSON.h. 2.感性认识 char * json = "{ \"json\" ...

  6. java解析多层嵌套json字符串

    java解析多层嵌套json字符串 java分别解析下面两个json字符串 package jansonDemo;import com.alibaba.fastjson.JSON; import co ...

  7. jquery parseJSON()方法解析json字符串

    在web项目开发中,前端经常需要接收后端传送来的json数据,解析json字符串,再对页面进行渲染.使用jquery解析json字符串通常需要将json字符串转化为javascript的json对象( ...

  8. mysql json 引号 双引号_关于JSON字符串key缺少双引号的解决方法 的讲解

    JSON字符串key缺少引号的解决方法 JSON字符串是key:value形式的字符串,正常key是由双引号括起来的. 例如:<?php $data = array('name'=>'fd ...

  9. java字符串转json取集合_Java中Json字符串直接转换为对象的方法(包括多层List集合)...

    使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...

最新文章

  1. 你是中层管理者?嗯,一个表面看似风光,实际却很 “鸡肋” 的重要岗位
  2. bzoj 4602: [Sdoi2016]齿轮
  3. 多备份cloud 5技术:传统数据备份思路的完美移植
  4. 查看linux安装redis的位置,linux查看是否安装redis
  5. 每个前端开发者必会的二十个JavaScript面试题
  6. 虚拟函数的静态决议 和 RTTI 小例子
  7. [转]android之Apache Http——向服务器发送请求的同时发送参数
  8. 计算机辅助外文文献,计算机辅助夹具设计外文文献.pdf
  9. ubantu安装_Virtualbox-Ubantu-Anaconda 数据分析环境搭建
  10. pytorch之各类图像库的图片读写方式
  11. java设计模式适配器模式_Java解释器设计模式
  12. VC被控制时关闭极域电子教室、破解联想硬盘保护系统密码(上)
  13. 三次样条曲线拟合算法c语言,关于三次样条曲线拟合法
  14. android取消输入法联想,输入法联想功能,怎么清除输入法联想
  15. Codeigniter 升级
  16. 用户流失、股价重挫的Netflix究竟发生了什么?
  17. 运营商精准大数据外呼系统
  18. 瑞萨单片机iap串口升级boot程序与app程序合并的工程构建-学习记录
  19. 人工智能作业 - A*算法程序求解八数码
  20. 学思录(一):带着信息的角度去学习

热门文章

  1. PBR渲染(四)——PBR头发渲染
  2. 今日头条阅读量怎么刷_今日头条推广 今日头条阅读量怎么刷
  3. Python 输入、输出
  4. html如何制作展开全文,如何实现文章内容页点击“展开阅读全文”的功能
  5. RHCE怎么报名?需要什么条件?
  6. Android Rooting for Programmers
  7. 思维导图训练孩子逻辑思维能力的方法
  8. 5G将又是一个失败的存在
  9. 股市心理学中的精神分析
  10. BIM系统平台建设及实施方案