全部产品
云市场

JSON函数

更新时间:2019-07-30 10:01:26

JSON_ARRAY_CONTAINS

  1. json_array_contains(json,value)
  • 命令说明:判断JSON参数中是否包含value指定的值。

  • 返回值类型:BOOLEAN。

  • 示例:

    1. select json_array_contains('[1, 2, 3]', 2);
    2. +-----------------------------------------+
    3. | 1 |

JSON_ARRAY_GET

  1. json_array_get(json_array,index)
  • 命令说明:根据index值,返回json_array中的指定元素。

    • index >= 0时,从json_array左侧开始返回指定元素。

    • index < 0时,从json_array右侧开始返回指定元素。

    • index指定的元素不存在时,返回结果为NULL

  • 返回值类型:VARCHAR。

  • 示例:

    1. select json_array_get('["a", "b", "c"]', 1) as result;
    2. +-----------------------------------------------+
    3. | b |
    1. select json_array_get('["a", "b", "c"]', -1) as result;
    2. +-----------------------------------------------+
    3. | c |

JSON_ARRAY_LENGTH

  1. json_array_length(json)
  • 命令说明:返回json数组的长度。

  • 返回值类型:BIGINT。

  • 示例:

    1. select json_array_length('[1, 2, 3]')
    2. +-----------------------------------+
    3. | 3 |

JSON _EXTRACT

  1. json_extract(json,json_path)
  • 命令说明:从json中返回json_path指定的值,json_path格式为$[n]

    • 如果n < 0,系统将提示错误。

    • 如果n为大于0的无效参数时,返回结果为NULL

  • 返回值类型:JSON。

  • 示例:

    1. select json_extract('[10, 20, [30, 40]]', '$[1]');
    2. +------------------------------------------------+
    3. | 20 |
    1. select json_extract('[10, 20, [30, 40]]', '$[0]');
    2. +------------------------------------------------+
    3. | 10 |

JSON_EXTRACT_SCALAR

  1. json_extract_scalar(json,json_path)
  • 命令说明:从json中返回json_path指定的值,json_path格式为$[n]

    • 如果n < 0,系统将提示错误。

    • 如果n为大于0的无效参数时,返回结果为NULL

  • 返回值类型:VARCHAR。

  • 示例:

    1. select json_extract_scalar('[10, 20, [30, 40]]', '$[1]');
    2. +------------------------------------------------------+
    3. | 20 |
    1. select json_extract_scalar('[10, 20, [30, 40]]', '$[0]');
    2. +------------------------------------------------------+
    3. | 10 |

JSON_ARRAY_EXTRACT/JSON_ARRAY_EXTRACT_SCALAR

  1. json_array_extract(json,jsonPath)
  • 命令说明:从json中返回json_path指定的值。

  • 返回值类型:VARCHAR(数组形式的字符串)。

  • 示例:

    1. select json_array_extract(arr1, '$.book.id') as a
    2. from (values ('[{"book":{"id":"12"}}, {"book":{"id":"14"}}]')) t(arr1);

    返回结果:["12", "14"]

    1. select json_array_extract_scalar(arr1, '$.book.id') as a
    2. from (values ('[{"book":{"id":"12"}}, {"book":{"id":"14"}}]')) t(arr1);

    返回结果:[12, 14]

JSON_FORMAT

  1. json_format(json)
  • 命令说明:将json转换为字符串,并返回结果。

  • 返回值类型:VARCHAR。

  • 示例:

    1. select json_format(JSON '[1, 2, 3]');
    2. +-----------------------------------+
    3. | [1,2,3] |

JSON_PARSE

  1. json_parse(string)
  • 命令说明:将string解析为JSON类型,并返回结果。

  • 返回值类型:JSON。

  • 示例:

    1. select json_parse('[1, 2, 3]');
    2. +----------------------------+
    3. | [1,2,3] |
    1. select json_parse('"a"');
    2. +-----------------------+
    3. | "a" |

JSON_SIZE

  1. json_size(json,json_path)
  • 命令说明:返回json的大小。

  • 返回值类型:BIGINT。

  • 示例:

    1. select json_size('{"x":{"a":1, "b": 2}}', '$.x') as result;
    2. +---------------------------------------------------------+
    3. | 2 |
    1. json_size('{"x": {"a": 1, "b": 2}}', '$.x.a') as result;
    2. +------------------------------------------------------+
    3. | 0 |

JSON_REMOVE

  1. json_remove(json_string,json_path_string)
  2. json_remove(json_string,array[json_path_string])
  • 命令说明:返回json_string中去除json_path_string之后的数据。

    可以通过array[json_path_string]一次性指定多个json_path_string

  • 返回值类型:VARCHAR(JSON格式的字符串)。

  • 示例:

    1. select json_remove(
    2. '{
    3. "glossary": {
    4. "title": "example glossary",
    5. "GlossDiv": {
    6. "title": "S",
    7. "GlossList": {
    8. "GlossEntry": {
    9. "ID": "SGML",
    10. "SortAs": "SGML",
    11. "GlossTerm": "Standard Generalized Markup Language",
    12. "Acronym": "SGML",
    13. "Abbrev": "ISO 8879:1986",
    14. "GlossDef": {
    15. "para": "A meta-markup language, used to create markup languages such as DocBook.",
    16. "GlossSeeAlso": ["GML", "XML"]
    17. },
    18. "GlossSee": "markup"
    19. }
    20. }
    21. }
    22. }
    23. }'
    24. , '$.glossary.GlossDiv') a;

    返回结果:{"glossary":{"title":"example glossary"}}

    1. select json_remove(
    2. '{
    3. "glossary": {
    4. "title": "example glossary",
    5. "GlossDiv": {
    6. "title": "S",
    7. "GlossList": {
    8. "GlossEntry": {
    9. "ID": "SGML",
    10. "SortAs": "SGML",
    11. "GlossTerm": "Standard Generalized Markup Language",
    12. "Acronym": "SGML",
    13. "Abbrev": "ISO 8879:1986",
    14. "GlossDef": {
    15. "para": "A meta-markup language, used to create markup languages such as DocBook.",
    16. "GlossSeeAlso": ["GML", "XML"]
    17. },
    18. "GlossSee": "markup"
    19. }
    20. }
    21. }
    22. }
    23. }'
    24. , array['$.glossary.title', '$.glossary.GlossDiv.title']) a;

    返回结果:

    1. {"glossary":{"GlossDiv":{"GlossList":{"GlossEntry":{"GlossTerm":"Standard Generalized Markup Language","GlossSee":"markup","SortAs":"SGML","GlossDef":{"para":"A meta-markup language, used to create markup languages such as DocBook.","GlossSeeAlso":["GML","XML"]},"ID":"SGML","Acronym":"SGML","Abbrev":"ISO 8879:1986"}}}}}

JSON_RESERVE

  1. json_reserve(json_string,json_path_string)
  2. json_reserve(json_string,array[json_path_string])
  • 命令说明:返回json_stringjson_path_string指定的数据。

    可以通过array[json_path_string]一次性指定多个json_path_string

  • 返回值类型:VARCHAR(JSON格式的字符串)。

  • 示例:

    1. select json_reserve(
    2. '{
    3. "glossary": {
    4. "title": "example glossary",
    5. "GlossDiv": {
    6. "title": "S",
    7. "GlossList": {
    8. "GlossEntry": {
    9. "ID": "SGML",
    10. "SortAs": "SGML",
    11. "GlossTerm": "Standard Generalized Markup Language",
    12. "Acronym": "SGML",
    13. "Abbrev": "ISO 8879:1986",
    14. "GlossDef": {
    15. "para": "A meta-markup language, used to create markup languages such as DocBook.",
    16. "GlossSeeAlso": ["GML", "XML"]
    17. },
    18. "GlossSee": "markup"
    19. }
    20. }
    21. }
    22. }
    23. }'
    24. , array['$.glossary.title']) a;

    返回结果:{"glossary":{"title":"example glossary"}}

    1. select json_reserve(
    2. '{
    3. "glossary": {
    4. "title": "example glossary",
    5. "GlossDiv": {
    6. "title": "S",
    7. "GlossList": {
    8. "GlossEntry": {
    9. "ID": "SGML",
    10. "SortAs": "SGML",
    11. "GlossTerm": "Standard Generalized Markup Language",
    12. "Acronym": "SGML",
    13. "Abbrev": "ISO 8879:1986",
    14. "GlossDef": {
    15. "para": "A meta-markup language, used to create markup languages such as DocBook.",
    16. "GlossSeeAlso": ["GML", "XML"]
    17. },
    18. "GlossSee": "markup"
    19. }
    20. }
    21. }
    22. }
    23. }'
    24. , array['$.glossary.title', '$.glossary.GlossDiv.title', '$.glossary.GlossDiv.GlossList.GlossEntry.ID']) a;

    返回结果:

    1. {"glossary":{"title":"example glossary","GlossDiv":{"GlossList":{"GlossEntry":{"ID":"SGML"}},"title":"S"}}}