MySQL 8.0的新增功能探索-JSON_VALUE()函数

  • JSON_VALUE()函数。 MySQL 8.0.21实现了一个JSON_VALUE()旨在简化JSON 列索引的新功能 。在最基本的形式中,它将JSON文档和指向该文档中单个值的JSON路径作为参数,以及(可选)允许您使用RETURNING关键字指定返回类型 。 等效于此: JSON_VALUE(*json_doc*, *path* RETURNING *type*)

    CAST(
    JSON_UNQUOTE( JSON_EXTRACT(json_doc, path) )
    AS type
    );

    您还可以指定ON EMPTYON ERROR或两个子句,与一起使用 JSON_TABLE()

    您可以使用JSON_VALUE()在这样的JSON列上的表达式上创建索引:

    CREATE TABLE t1(
    j JSON,
    INDEX i1 ( (JSON_VALUE(j, '$.id' RETURNING UNSIGNED)) )
    );

    INSERT INTO t1 VALUES ROW('{"id": "123", "name": "shoes", "price": "49.95"}');

    使用此表达式的查询(例如此处所示)可以使用索引:

    SELECT name, price FROM t1
    WHERE JSON_VALUE(j, '$.id' RETURNING UNSIGNED) = 123;

    在许多情况下,这比从该JSON列创建一个生成的列然后在生成的列上创建索引要简单得多。

    有关更多信息和示例,请参见的描述 JSON_VALUE()