You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使SQL查询结果先返回以B开头的城市,再返回含B的城市?

解决方案

首先,你当前的WHERE条件存在冗余:name like 'b%' 已经被 name like '%b%' 包含,所以可以简化为只保留后者。

要实现先展示以B开头的城市,再展示包含B但不以B开头的城市的排序需求,核心是在ORDER BY中通过条件判断给两类结果分配不同的优先级,具体写法如下:

SELECT name
FROM tb_city
WHERE name LIKE '%b%'
ORDER BY
    CASE 
        WHEN name LIKE 'b%' THEN 1
        ELSE 2
    END,
    name;

细节说明:

  • CASE 语句会给以B开头的城市标记为优先级1,其他包含B的城市标记为优先级2,排序时优先级1的结果会自然排在前面。
  • 第二个排序字段name是可选的,用来在同一优先级内对城市名称进行常规排序(比如按字母顺序),如果不需要统一组内排序可以去掉。

如果你的SQL环境对大小写敏感(区分大写B和小写b),可以用统一大小写的方式来匹配:

SELECT name
FROM tb_city
WHERE LOWER(name) LIKE '%b%'
ORDER BY
    CASE 
        WHEN LOWER(name) LIKE 'b%' THEN 1
        ELSE 2
    END,
    name;

内容的提问来源于stack exchange,提问作者Mor Biton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 14:30:59