【发布时间】:2026-01-10 08:20:06
【问题描述】:
我有一个这样的 json 值的表:
-表1
id | name | data
------+----------+---------------
1 | Test | {"city_id": 3, "email":"test@test.com", "city_name":"something"}
2 | Test 2 | {"city_id": 1, "email":"test2@test2.com", "city_name":"another"}
3 | Test 3 | {"city_id": 6, "email":"test3@test3.com", "city_name":"blahblah"}
现在我想要SELECT 和order by data.city_name 的记录,所以我使用这个代码:
SELECT id, name, JSON_EXTRACT(data, 'city_name') AS cityName
FROM table1
ORDER BY cityName ASC
但此查询无法正确排序我的记录!
P.S:city_name 有 UTF-8 字符。
【问题讨论】:
-
你能告诉我们实际数据、错误输出和预期输出吗?
-
try as :: SELECT ... JSON_EXTRACT(data, '$.city_name') AS cityName...
-
MySQL 使用 utf8mb4_bin 排序规则处理 JSON 上下文中使用的字符串,因此区分重音和大小写。