Jos*_*off 3 mysql syntax json function case
我对 MySQL 相当陌生,但我想创建一个函数来验证存储在我的数据库表中的 JSON 对象。
我查找了有关创建函数的信息,但一定缺少一些东西,因为我似乎无法让它工作。看起来并不太复杂,但也许我没有使用适当的语法。
这是我的代码:
DELIMITER //
CREATE FUNCTION CHECKJSON( DB_NAME varchar(255), TABLE_NAME varchar(255), JSON_COLUMN varchar(255))
RETURNS varchar(300)
BEGIN
DECLARE notNullCount int;
DECLARE validJSONCount int;
DECLARE result varchar(300);
SET notNullCount = (SELECT count(*) FROM DB_NAME.TABLE_NAME WHERE JSON_COLUMN IS NOT NULL);
set validJSONCount = (SELECT count(*) FROM DB_NAME.TABLE_NAME WHERE JSON_VALID(JSON_COLUMN) > 0);
CASE
WHEN (validJSONCount = notNullCount) THEN
SET result = CONCAT('VALID JSON COUNT: ', validJSONCount)
ELSE
SET result = CONCAT('INVALID JSON COUNT: ', (notNullCount - validJSONCount))
END;
RETURN result;
END //
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此代码时,收到以下错误消息:“错误代码:1064。您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,以获取在 'ELSE SET 附近使用的正确语法”结果 = CONCAT('INVALID JSON COUNT: ', (notNullCount - validJSONC' at line 14"
关于如何改进这段代码有什么想法吗?谢谢!
从 MySQL 5.7 开始,你有一个漂亮而简单的函数来实现这一点:
JSON_VALID(value)返回 0 或 1 以指示值是否是有效的 JSON。如果参数为 NULL,则返回 NULL。
https://dev.mysql.com/doc/refman/5.7/en/json-attribute-functions.html#function_json-valid
| 归档时间: |
|
| 查看次数: |
3060 次 |
| 最近记录: |