在MySQL查询中迭代JSON

时间:2016-01-08 16:41:18

标签: mysql json loops stored-procedures

我正在为MySQL中的JSON数组寻找类似shopt -s nullglob x="a/b/c/d" IFS=/ read -a x <<< "$x" # x is now an array in the form (a b c d) result=(*"${x[0]}"*) for c in "${x[@]:1}" do newresult=() for r in "${result[@]}" do match=("$r"/*"$c"*) [ "${#match[@]}" -gt 0 ] && \ newresult=("${newresult[@]}" "${match[@]}") done result=("${newresult[@]}") done echo "${result[@]}" 的内容。

MySQL JSON data type中的经理ID如下:forEach,我想对列表中的每个项目执行操作。

一个天真的解决方案是使用从0开始的计数器执行WHILE循环,并在VAR_MANAGER_ID为空时结束。以下是WHILE循环内部外观的设计示例:

[1, 2, 3, 4, 5]

但必须有更好的方法!我该怎么做:

SET VAR_PATH = CONCAT('$[', COUNTER, ']');
SET VAR_MANAGER_ID = JSON_PARSE(VAR_MANAGER_IDS, PATH);

# See if we've reached the end of the list
IF VAR_MANAGER_ID IS NULL
THEN 
    BREAK
END;
INSERT INTO LU_MANAGER (MANAGER_ID) VALUES (VAR_MANAGER_ID);

1 个答案:

答案 0 :(得分:5)

在这里完成新手,但我找到了一种使用REPEAT - UNTIL - END REPEAT

迭代JSON数组的方法
   REPEAT
        SET txt = JSON_EXTRACT(myjson, CONCAT("$[", indx, "]"));
        # use txt
        SET indx = indx + 1;
        UNTIL indx = JSON_LENGTH(myjson)
   END REPEAT;