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

SQL查询实现:筛选第二位为a的四字母姓氏 补全WHERE条件

问题解决实现

你需要补充的last_name筛选逻辑可以通过字符串函数或者LIKE通配符实现,同时注意你原有SQL里DISTINCT的位置写错了,正确写法如下:

写法1:用字符串函数明确判断

SELECT COUNT(DISTINCT actor_id) AS matched_total
FROM actor
WHERE
  LEFT(first_name, 1) = 'W'
  OR (
    LENGTH(last_name) = 4
    AND SUBSTR(last_name, 2, 1) = 'a'
  );

说明

  • 第二个筛选条件要求两个规则同时满足,必须用AND关联两个判断,并用括号包裹,避免和前面的OR产生逻辑优先级错误
  • LENGTH(last_name) = 4用来判断last_name字段值长度为4个字符
  • SUBSTR(last_name, 2, 1)表示从last_name的第2位开始截取1个字符,判断其等于'a'即可满足「第二个字符为a」的要求
  • 原有写法里的DISTINCT COUNT(*)是无效写法:DISTINCT需要写在聚合函数内部,指定去重依据,这里用actor表的主键actor_id作为去重字段即可统计不重复的记录总数,如果确认表中无完全重复的行,直接写COUNT(*)也可以得到正确结果。

写法2:用LIKE通配符简化实现

用SQL的LIKE通配符可以更简洁地实现last_name的筛选规则,不需要调用多个函数:

SELECT COUNT(*) AS matched_total
FROM actor
WHERE
  LEFT(first_name, 1) = 'W'
  OR last_name LIKE '_a__'

说明

LIKE语法里下划线_是通配符,匹配任意单个字符:

  • 4个字符的长度刚好对应4个下划线占位
  • 第二个位置写固定字符'a',就可以精准匹配「长度为4、第二位为a」的last_name值,和函数判断的效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:51:20