例如:
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));
还有其他方法还是我错过了什么?
答案 0 :(得分:2)
JSON_PATH
返回一个JSON对象(一个JSON字符串),当用作字符串时需要不加引号:
SELECT JSON_EXTRACT(@value, JSON_UNQUOTE(@path));
“2”