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

SQL查询中如何将匹配'alex%%'的分组合并为单个'alex'分组

解决SQL中匹配'alex%%'记录合并分组的问题

嘿,针对你需要把所有匹配alex%%的记录合并为单个alex分组的需求,我给你两种实用的实现方案,都能完美达到你想要的结果:

方案一:使用CASE WHEN条件判断

这是兼容性最强的方法,几乎所有主流数据库都支持:

SELECT 
    CASE 
        WHEN name LIKE 'alex%' THEN 'alex'
        ELSE name 
    END AS name,
    COUNT(name) AS count
FROM employee 
WHERE LOCATION LIKE '%NY%'
GROUP BY 
    CASE 
        WHEN name LIKE 'alex%' THEN 'alex'
        ELSE name 
    END;

逻辑说明:

  • CASE WHEN语句会检查每条记录的name字段,只要是以alex开头(匹配alex%),就把它替换成统一的alex;其他不匹配的名称保持原样。
  • 分组的时候也用同样的CASE逻辑,这样所有符合规则的记录就会被合并到同一个alex分组里,最终计算出的总数就是10+5+1+500=516,完全符合你的预期。

方案二:使用正则表达式替换(适合支持正则的数据库)

如果你的数据库支持正则表达式操作(比如MySQL、PostgreSQL、SQL Server等),可以用更简洁的正则替换方式:
以MySQL为例:

SELECT 
    REGEXP_REPLACE(name, '^alex.*', 'alex') AS name,
    COUNT(name) AS count
FROM employee 
WHERE LOCATION LIKE '%NY%'
GROUP BY REGEXP_REPLACE(name, '^alex.*', 'alex');

逻辑说明:

正则表达式^alex.*会精准匹配以alex开头的所有字符串,REGEXP_REPLACE函数会把这些匹配到的字符串统一替换成alex,后续分组和计数逻辑和方案一一致,同样能实现合并效果。

小提示:

你原SQL里的LOCATION LIKE '%%NY%%'可以简化成LOCATION LIKE '%NY%',单个百分号已经能匹配任意长度的前后字符,写法更简洁哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:53:59