mysql5.7及以上有个函数为ANY_VALUE(),具体什么作用可以自己百度了解
有一个问题是MariaDb 并不支持这个函数导致同样的项目部署到MariaDb服务器上报错现在我们使用自定义函数来再MariaDb替代它,具体实现如下
DELIMITER //
CREATE AGGREGATE FUNCTION ANY_VALUE (x LONGBLOB) RETURNS LONGBLOB
BEGIN
LOOP
FETCH GROUP NEXT ROW;
RETURN x;
END LOOP;
END //
DELIMITER ;
记住我们在执行之前要开启mysql允许自定义函数
#查看自定义函数开启状态 --mysql里执行
SHOW variables like '%fun%';
如果是off的话
set global log_bin_trust_function_creators = 1;
然后执行就可以了,但是最坑的是中文用LONGBLOB乱码 所以有中文场景应该用text这个数据类型
DELIMITER //
CREATE AGGREGATE FUNCTION ANY_VALUE (x TEXT) RETURNS TEXT
BEGIN
LOOP
FETCH GROUP NEXT ROW;
RETURN x;
END LOOP;
END //
DELIMITER ;
本文介绍如何在MariaDB中使用自定义函数ANY_VALUE的替代方案,包括创建LONGBLOB和TEXT版本函数,以及处理中文字符编码问题。还提到设置自定义函数权限的方法和注意事项。
1226

被折叠的 条评论
为什么被折叠?



