1. 程式人生 > >Mysql JSON欄位提取某一個屬性值的函式

Mysql JSON欄位提取某一個屬性值的函式

mysql從5.7開始才支援JSON_EXTRACT等 JSON相關的函式,

專案裡用到的mysql是5.6的,需要提取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返回。

裡面用到了幾個mysql自帶函式

1. position 定位字串 子串的位置

2. substr  字串擷取

3. convert 資料型別轉換