如何在java中获取mysql5.7版本里的json-CSDN论坛

如何在java中获取mysql5.7版本里的json-CSDN论坛,第1张

DELIMITER $$

USE `dw`$$

DROP FUNCTION IF EXISTS `fn_Json_getKeyValue`$$

CREATE DEFINER=`data`@`%` FUNCTION `fn_Json_getKeyValue`(

in_JsonArray VARCHAR(4096),#JSON数组字符串

in_Index TINYINT, #JSON对象序号,序号从1开始

in_KeyName VARCHAR(64)#键名

) RETURNS VARCHAR(512) CHARSET utf8

BEGIN

DECLARE vs_return VARCHAR(4096);

DECLARE vs_JsonArray, vs_Json, vs_KeyName VARCHAR(4096);

#declare vs_Json varchar(4096);

DECLARE vi_pos1, vi_pos2 SMALLINT UNSIGNED;

#写监控日志

#insert into dwt_etl_log(sp_name, title, description)

#values('dwfn_Json_getKeyValue', '通过Json键名取键值', concat('in_JsonArray=', in_JsonArray));

SET vs_JsonArray = TRIM(in_JsonArray);

SET vs_KeyName = TRIM(in_KeyName);

IF vs_JsonArray = '' OR vs_JsonArray IS NULL

OR vs_KeyName = '' OR vs_KeyName IS NULL

OR in_Index <= 0 OR in_Index IS NULL THEN

SET vs_return = NULL;

ELSE

#去掉方括号

SET vs_JsonArray = REPLACE(REPLACE(vs_JsonArray, '[', ''), ']', '');

#取指定的JSON对象

SET vs_json = SUBSTRING_INDEX(SUBSTRING_INDEX(vs_JsonArray,'}', in_index),'}',-1);

IF vs_json = '' OR vs_json IS NULL THEN

SET vs_return = NULL;

ELSE

SET vs_KeyName = CONCAT('"', vs_KeyName, '":');

SET vi_pos1 = INSTR(vs_json, vs_KeyName);

IF vi_pos1 > 0 THEN

#如果键名存在

SET vi_pos1 = vi_pos1 + CHAR_LENGTH(vs_KeyName);

SET vi_pos2 = LOCATE(',', vs_json, vi_pos1);

IF vi_pos2 = 0 THEN

#最后一个元素没有','分隔符,也没有结束符'}'

SET vi_pos2 = CHAR_LENGTH(vs_json) + 1;

END IF;

SET vs_return = REPLACE(MID(vs_json, vi_pos1, vi_pos2 - vi_pos1), '"', '');

END IF;

END IF;

END IF;

RETURN(vs_return);

END$$

DELIMITER ;

测试: {"old_current_score":"2","new_current_score":"0","old_grade_id":"1","new_grade_id":"1","grade_time":"2016-04-09 00:43:26","grade_upgrade_time":"2017-04-09 00:43:26"}

select fn_Json_getKeyValue(reason,1,'old_grade_id');

mysql56及以下怎么查询数据库里面json

在MySQL与PostgreSQL的对比中,PG的JSON格式支持优势总是不断被拿来比较。其实早先MariaDB也有对非结构化的数据进行存储的方案,称为dynamic column,但是方案是通过BLOB类型的方式来存储。

以上就是关于如何在java中获取mysql5.7版本里的json-CSDN论坛全部的内容,包括:如何在java中获取mysql5.7版本里的json-CSDN论坛、mysql5.6及以下怎么查询数据库里面json、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10622599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存