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

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

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

            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

标签: mysql sql json


【解决方案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 ;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2018-05-13
    相关资源
    最近更新 更多