2017-07-17 48 views
2

我有一個表的JSON值是這樣的:排序JSON字段值

- 表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"} 

現在我想SELECT記錄與order bydata.city_name,所以我用這個代碼:

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

但這個查詢不能正確排序我的記錄!

P.S:city_name有UTF-8字符。

+1

,你能否告訴我們的實際數據,錯誤產出和預期產出? –

+1

試試:: SELECT ... JSON_EXTRACT(data,'$ .city_name')AS cityName ... –

回答

0

選中此項。

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) 

輸出:

enter image description here

2

你似乎沒有使用JSON_EXTRACT()正確,請嘗試使用:

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

Demo Fiddle