昨天为解决业务需求,需要在mysql 数据库中类型为json字段的列中提取指定的属性列表,因为之前对mysql数据库中操作json数据的经验比较少,特此记录下,以备以后回顾。
首先,展示下我数据库中保存的数据 (数据已做脱敏处理)
[{"id": "dad014a2f9594a62ae3f7be3", "del": 10, "code": "XC02104162990","orgId": "5e0364ff8139f600163ff", "state": 10, "staffId": "1b8cc278f7673793327fed0", "subjectId": "f107fe51abf9410df07a1a", "categoryId": "ef15a801af84ac6e1cef2", "createDate": 1618553801000, "createTime": 1618553801000, "totalAmount": 0, "salaryPeriod": 1617206400000, "createStaffId": "008e97367f600163e14efff"}, {"id": "4dd2f82b9a3f182ec", "del": 10, "code": "XC202104163517", "orgId": "5e0364ff81f600163e14efff", "state": 10, "staffId": "1b8cc20c8793327fed0", "subjectId": "cb0f52a4e0d71aed75f37a156", "categoryId": "ef15a4e581de4fac6e1cef2", "createDate": 1618553800000, "createTime": 1618553800000, "totalAmount": 0, "salaryPeriod": 1617206400000, "createStaffId": "008e97367f8e11e14efff"}]
业务需求,提取上述数据中的 subjectId 字段列表,实现sql如下:
SELECT json_extract( subject_json, '$[*].subjectId' ) AS subjectIds FROM t;
执行结果: ["f107fe51abf9410df07a1a", "cb0f52a4e0d71aed75f37a156"] ,获得上述JSONArray 中每一个 JsonObject 中 key为 subjectId 的值数组
-
subject_json 为上述数据所在字段。
-
json_extract :mysql版本5.7及以上,用于取出 json 串中某个key对应的值
$[*].subjectId 表示获取当前字段内容下的所有 subjectId,如果只是想获取某一条,可以带上当前数据在数组中的序号获取,
比如:获取 第一条中的 subjectId ,$[1].subjectId
场景: 昨天为解决业务需求,需要在mysql 数据库中类型为json字段的列中提取指定的属性列表,因为之前对mysql数据库中操作json数据的经验比较少,特此记录下,以备以后回顾。 首先,展示下我数据库中保存的数据 (数据已做脱敏处理)[{"id": "dad014a2f9594a62ae3f7be3", "del": 10, "code": "XC02104162990","orgId": "5e0364ff8139f600163ff", "state": 10, ...
一、单个
json
的,获取
值
使用
json
_
extract
`select
json
_
extract
('{"name":"Zhaim","tel":"13240133388"}',"$.tel`");
二、数组的
json
的,获取数组的长度使用
JSON
_LENGTH
SELECT id,
JSON
_LENGTH('[{"id":"10000004555096","name":"1.docx"},{"id":"10000004555098","name":"2.doc"},{"id":"1000000455509
用[N]代表
JSON
数组中
的第N个元素。序号从0开始。
用[M to N]代表
JSON
数组中
第M个至第N个元素。序号从0开始。
用.[*]通配符代表
JSON
对象
的所有子元素。
用[*]通配符代表
JSON
数组的所有元素。
用**通配符代表用某字符开头或结尾的元素。
*通配符的查询:
mysql
> SELECT
JSON
_
EXTRACT
('{"a":
SELECT * FROM s_form sf
where
json
_contains(sf.target_type,CONCAT('"',#{targetType},'"'))
数据库的
字段
为
需要查询target_type中包含’COUNTY’元素的数据
sql语句为:
SELECT * FROM s_form sf
where
json
_contains(sf.target_ty
解决日期转换异常 JSON parse error: Cannot deserialize value of type `java.util.Date` from String
小麟有点小靈:
js 页面打印,兼容单个打印和分页批量打印,自定义页眉和简单页脚
aameng2016:
解决前端 js 中使用 append 动态追加元素标签后,事件和css样式异常问题
小白编码:
Java 开发代码片段【持续更新】
programmer_ada:
Mysql JSON_SEARCH 用法
_修铁路的: