为什么MySQL JSON_EXTRACT不接受JSON_SEARCH的返回值?

时间:2016-02-12 11:35:49

标签: mysql

例如:

SET @key = '["a","b"]';
SELECT JSON_SEARCH(@key, 'one', 'b');

...将返回路径:

  

" $ [1]"

将其作为JSON_EXTRACT中的路径插入,如:

SET @value = '["1","2"]';
SELECT JSON_EXTRACT(@value, "$[1]");

...这将返回值:

  

" 2"

但如果我写下以下内容:

SET @key = '["a","b"]';
SET @value = '["1","2"]';
SET @path = (SELECT JSON_SEARCH(@key, 'one', 'b'));
SELECT JSON_EXTRACT(@value, @path);

...这会丢失一个错误:

  

SQL Fehler(3143):无效的JSON路径表达式。错误在'""""''中的字符位置1附近。

修剪双引号有效,但我不喜欢这个解决方案:

SELECT JSON_EXTRACT(@value, TRIM(BOTH '"' FROM @path));

还有其他方法还是我错过了什么?

1 个答案:

答案 0 :(得分:2)

JSON_PATH返回一个JSON对象(一个JSON字符串),当用作字符串时需要不加引号:

SELECT JSON_EXTRACT(@value, JSON_UNQUOTE(@path));
  

“2”