2017-07-17 5 views
2

ich eine Tabelle mit json Werte wie dieses:Sortieren nach JSON Feldwerte

-Tisch 1

id | name | data 
------+----------+--------------- 
1  | Test  | {"city_id": 3, "email":"[email protected]", "city_name":"something"} 
2  | Test 2 | {"city_id": 1, "email":"[email protected]", "city_name":"another"} 
3  | Test 3 | {"city_id": 6, "email":"[email protected]", "city_name":"blahblah"} 

Jetzt möchte ich SELECT Datensätze mit order bydata.city_name, so verwende ich diesen Code:

SELECT id, name, JSON_EXTRACT(data, 'city_name') AS cityName 
FROM table1 
ORDER BY cityName ASC 

aber diese Abfrage kann meine Datensätze nicht richtig sortieren!

S.S. city_name haben UTF-8 Zeichen.

+1

Können Sie uns aktuelle Daten zeigen, fehlerhafte Ausgabe und erwartete Ausgabe? –

+1

versuchen Sie als :: SELECT ... JSON_EXTRACT (Daten, '$ .city_name') AS cityName ... –

Antwort

0

Überprüfen Sie dies.

SELECT Id ,name,SUBSTRING_INDEX(SUBSTRING_INDEX(data,'city_name":"',-1),'"',1) as CITY 
FROM tempjson 
order by SUBSTRING_INDEX(SUBSTRING_INDEX(data,'city_name":"',-1),'"',1) 

OutPut:

enter image description here

2

Sie scheinen nicht JSON_EXTRACT() richtig zu verwenden, versuchen Sie mit:

SELECT id, name, JSON_EXTRACT(data, '$.city_name') AS cityName 
FROM demo ORDER BY cityName ASC 

Demo Fiddle