2016-07-18 7 views
1

Ich habe ein Array von Daten in einem Feld namens from. Es kann in etwa so aussehen.Pop das letzte Element in einem JSON-Array in MySQL 5.7

['2016-05-01', '2016-05-03', '2016-05-04'] 

Ich möchte das letzte Element zu SELECT (hier 2016-05-04).

Ich habe dies versucht:

SELECT `from`->"$[JSON_LENGTH(`from`) - 1]" FROM `table` WHERE `id` = 3; 

bekam aber diesen Fehler:

ERROR 3143 (42000): Invalid JSON path expression. The error is around character position 2. 

Ich habe versucht, eine Variable wie folgt aus:

SET @count = (SELECT JSON_LENGTH(`from`) - 1 FROM `table` WHERE `id` = 3); 
SELECT `from`->"$[@count]" FROM `table` WHERE `id` = 3; 

bekam aber die genaue gleicher Fehler Aber wenn ich das tue:

SELECT `from`->"$[2]" FROM `table` WHERE `idx` = 3; 

Es funktioniert gut.

+0

Ich habe 'SELECT \' von \ '->" $ [- 1] "FROM \' table \ 'WHERE \' idx \ '= 3;' mit dem gleichen Fehler versucht ... – Havarem

Antwort

0

können Sie:

SELECT JSON_EXTRACT(`from`,CONCAT("$[",JSON_LENGTH(`from`)-1,"]"))  FROM `table`; 

das letzte Element in einem JSON-Array zu erhalten.