MySQL8.0.18执行含JSON_VALUE的SQL提示函数不存在是什么原因
MySQL无法调用JSON_VALUE函数问题解答
报错原因
JSON_VALUE为MySQL 8.0.21版本才新增的内置函数,你当前使用的8.0.18版本不支持该函数,因此执行SQL时会触发FUNCTION xxxx.JSON_VALUE does not exist报错。
解决方法
你可以根据实际场景选择任意一种方案处理:
- 方案1:将MySQL实例升级到8.0.21及以上版本,原有SQL语句可直接正常运行
- 方案2:使用低版本兼容的语法改写SQL,用
JSON_UNQUOTE(JSON_EXTRACT())或者其简写语法糖->>替代JSON_VALUE即可,改写后的语句如下:
-- 写法1:使用JSON_UNQUOTE+JSON_EXTRACT组合 SELECT `name` FROM `list_search_test` WHERE JSON_UNQUOTE(JSON_EXTRACT(`info`, '$.sex')) = 'male' AND JSON_OVERLAPS(JSON_UNQUOTE(JSON_EXTRACT(`info`, '$.hobby')), JSON_QUOTE('basketball')); -- 写法2:使用->>语法糖简化,效果和写法1完全一致 SELECT `name` FROM `list_search_test` WHERE `info`->>'$.sex' = 'male' AND JSON_OVERLAPS(`info`->>'$.hobby', JSON_QUOTE('basketball'));
注:
->>是MySQL 5.7版本就支持的语法糖,无需额外升级即可直接在8.0.18版本使用。
内容的提问来源于stack exchange,提问作者书清秋
相关产品推荐
相关产品推荐

