【问题标题】:JSON_VALUE() with CONCAT() get syntax error带有 CONCAT() 的 JSON_VALUE() 获取语法错误
【发布时间】:2022-10-14 21:28:36
【问题描述】:

在 mysql Ver 8.0.26 中测试

SET @my_json = '{"key1":"val1","key2":"val2"}';
SET @my_key = 'key1';

以下尝试一切正常:

SELECT JSON_VALUE(@my_json,'$.key1');
JSON_VALUE(@my_json,'$.key1')
val1

虽然使用以下一个我得到一个错误:

SELECT JSON_VALUE(@my_json,CONCAT('$.',@my_key));

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'CONCAT('$.',@my_key))' 附近使用正确的语法

另外,如果我尝试其他两种尝试:

SELECT JSON_VALUE(@my_json,CONCAT('$.','key1'));

SELECT JSON_VALUE(@my_json,CONCAT('$.','"key1"'));

我做错了什么?

我需要使用动态key names 作为@variable

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    正如JSON_VALUE() function 描述声称的那样

    小路是指向文档中某个位置的 JSON 路径。这必须是字符串文字值。

    IE。您不能将表达式用作小路范围。

    解决方案:使用JSON_EXTRACT()函数(对于字符串类型的数据,附带JSON_UNQUOTE())。 https://dbfiddle.uk/UdJGwopG

    【讨论】:

      猜你喜欢
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 2011-06-27
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多