我们有一个标准的MySQL 5.1数据库,其中有一个名为places的表.我们有两列,name和name_bg,其中name是地方的英文名称,name_bg是地方的保加利亚名称.
我们有两个以"РИМ"开头的地方."Рим"和"Римини".
+--------+--------+--------------+
| id | name | name_bg |
+--------+--------+--------------+
| 221543 | Rimini | ?????? |
| 34514 | Rome | ??? |
+--------+--------+--------------+
Run Code Online (Sandbox Code Playgroud)
当这样搜索时:
select id, name from places where name like '???%';
Run Code Online (Sandbox Code Playgroud)
或者像这样:
select id, name from places where name_bg like '???%';
Run Code Online (Sandbox Code Playgroud)
一切都很好看.
奇怪的是,这样搜索时(GROUP BY子句):
SELECT places.name, places.name_bg, places.country_id, countries.continent_id WHERE places.name LIKE '???%' OR places.name_bg LIKE '???%' ORDER ("CHAR_LENGTH(places.name), CHAR_LENGTH(places.name_bg), countries.continent_id, places.popular DESC") GROUP BY country_id LIMIT 10
Run Code Online (Sandbox Code Playgroud)
查询首先返回Римини而不是Рим.
我们在查询中尝试了订单和组,但没有任何帮助.
甚至切换了地点的ID,但发生了相同的结果.
我们希望首先得到卖空结果.
任何帮助都是适当的.
最好的,Yavor
我不清楚为什么你期望它应该.长度功能是否满足您的需求?
SELECT id,
name
FROM places
WHERE name_bg LIKE '???%'
OR name LIKE '???%'
ORDER BY Length(name)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
304 次 |
最近记录: |