mysql从5.7开始才支持JSON_EXTRACT等 JSON相关的函数,mysql
项目里用到的mysql是5.6的,须要提取JSON字段里某一个属性值进行统计,sql
本身写了一个笨的提取方法:json
CREATE DEFINER=`root`@`%` FUNCTION `jsonExtract`(`fieldName` varchar(30),`jsonStr` varchar(1024)) RETURNS double
BEGIN
declare firstPos int;
declare firstStr varchar(1024);
declare secondPos int;
declare thirdPos int;
declare resultStr varchar(200);
declare result double;
set firstPos = POSITION(fieldName IN jsonStr);
set firstStr = SUBSTR(jsonStr,firstPos);
set secondPos = POSITION(':' IN firstStr);
set thirdPos = POSITION(',' IN firstStr);
set resultStr = SUBSTR(firstStr,secondPos+1,thirdPos-secondPos-1);
set result = CONVERT(resultStr,decimal(20,6));
RETURN result;
END函数
我这里最后转成了double返回。ci
里面用到了几个mysql自带函数字符串
1. position 定位字符串 子串的位置it
2. substr 字符串截取io
3. convert 数据类型转换数据类型