2016-02-12 112 views
1

例如:爲什麼MySQL JSON_EXTRACT不接受JSON_SEARCH的返回值?

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): Invalid JSON path expression. The error is around character position 1 in '"$[1]"'.

剪裁雙引號的作品,但我不喜歡這樣的解決方案:

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

有沒有其他方法或我錯過了什麼?

回答

2

JSON_PATH返回JSON對象(JSON字符串)作爲字符串使用時必須是無引號:

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

"2"