自己处理json的mySql函数?

Posted

技术标签:

【中文标题】自己处理json的mySql函数?【英文标题】:Own mySql function which processes json? 【发布时间】:2021-11-14 08:53:29 【问题描述】:

我们如何创建一个接收json 作为输入并返回相同jsonmysql 函数?

这基本上是我想在新功能中发生的事情......

            json_extract(                                                                # Extract the json object by its path
                jsonComponents,
                substring_index(                                                         # Unquote and trim for receiving path to the object instead to its attribute
                    json_unquote(
                        json_search(                                                     # Find the path to an specific json object by a value
                            jsonComponents, 
                            'one', 
                            'com.parallelorigin.code.ecs.components.Identity'
                        )
                    ),
                '.', 1)
            ),

我试过这样,但它给了我一个不同步的错误或类似的错误。而且我不知道为什么......

DELIMITER //

DROP FUNCTION IF EXISTS json_extract_object_by_value;
CREATE FUNCTION json_extract_object_by_value(x json) RETURNS json
    BEGIN
        RETURN JSON("10","10")
    END//

DELIMITER ;

我们究竟如何在 mysql 中创建一个 json 函数?我们如何传递 json 并从中返回 json?

【问题讨论】:

我不明白这个问题。如果要返回相同的 JSON,只需使用 RETURN x; 什么是jsonComponents 【参考方案1】:

问题是我的数据库设置,不知何故我总是收到一个不同步的错误,但这不是功能错误。

DELIMITER //

DROP FUNCTION IF EXISTS json_extract_object_by_value;
CREATE FUNCTION json_extract_object_by_value(col JSON, val varchar(200)) RETURNS JSON
    DETERMINISTIC
    BEGIN
    
        DECLARE extracted_json JSON;
        SET extracted_json = json_extract(                                           # Extract the json object by its path
            col,
            substring_index(                                                         # Unquote and trim for receiving path to the object instead to its attribute
                json_unquote(
                    json_search(                                                     # Find the path to an specific json object by a value
                        col, 
                        'one', 
                        val                                                          # The value we wanna find a path to in the json
                    )
                ),
            '.', 1)
        );
    
        RETURN extracted_json;
    END//

DELIMITER ;

然而,这确实发挥了作用。

【讨论】:

以上是关于自己处理json的mySql函数?的主要内容,如果未能解决你的问题,请参考以下文章

mysql json 方法

mysql对json取值路径怎么设置变量

Node Mysql事务处理封装

mysql中怎么存储数组?在线等!急!

Mysql中的JSON函数使用教程

Mysql Json函数之更新