MySQL获取数组中指定位置的元素内容
- 前言
- 一、本文中使用的MySQL函数
- JSON函数(只有MySql5.7及其以上版本可以使用JSON函数)
- JSON_EXTRACT(json,path)
- JSON_UNQUOTE(value)
- 字符串函数
- SUBSTRING_INDEX(s,d,n)
- REVERSE(s)
- 二、使用示例
- 方式一:
- 方式二:
前言
最近在查数据库中的JSON字段时,有这么个需求.需要在数据库端查询数据库中JSON数据类型的字段,这个JSON中的某个value是数组类型的值,最终需要获取到这个数组中的某个位置的元素
在看本文章前需要先了解如何使用MySQL的JSON函数来处理JSON字段.
一、本文中使用的MySQL函数
JSON函数(只有MySql5.7及其以上版本可以使用JSON函数)
参考来源:https://www.cnblogs.com/waterystone/p/5626098.html
JSON_EXTRACT(json,path)
作用:从json文档里抽取数据。如果有参数有NULL或path不存在,则返回NULL。如果抽取出多个path,则返回的数据封闭在一个json array里。
JSON_UNQUOTE(value)
去掉value的双引号。如果val为NULL,则返回NULL
字符串函数
SUBSTRING_INDEX(s,d,n)
返回从字符串 s 的第 n个出现的分隔符 d之后的子串。
如果 n是正数,返回第 n个字符左边的字符串。
如果 n是负数,返回第(n的绝对值(从右边数))个字符右边的字符串。
REVERSE(s)
将字符串s的顺序反过来
二、使用示例
方式一:
用mySQL中的JSON函数,先获取JSON中的数组,利用JSON_EXTRACT函数将数组中指定位置的元素获取出来,此时会带有双引号,使用JSON_UNQUOTE函数去双引号
select
JSON_UNQUOTE(JSON_EXTRACT(JSON_EXTRACT('{"list":["1","2","3"]}','$.list'),'$[2]'))方式二:
采用字符串截取的方式获取数组内容
select
REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(arra,'"',2)),'"',1)) as arr
from (
SELECT
REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(array,',',1)),',',1)) as arra
FROM ( select JSON_EXTRACT('{"list":["1","2","3"]}','$.list') as array ) as a)
b
















