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

Oracle SQL统计含a/A、e/E的字符串数量及ORA-00907错误解决

Oracle SQL 统计含指定字符的记录数解决方案

原SQL语句报错ORA-00907: missing right parenthesis的核心原因是:COUNT()函数无法直接处理LIKE返回的布尔值,Oracle解析时因语法逻辑错误误判为括号缺失。

以下是符合要求的单查询实现方式(无嵌套子查询):

方法一:CASE表达式配合LIKE

SELECT
  COUNT(CASE WHEN LOWER(nazwisko) LIKE '%a%' THEN 1 END) AS "Ile nazwisk z A",
  COUNT(CASE WHEN LOWER(nazwisko) LIKE '%e%' THEN 1 END) AS "Ile nazwisk z E"
FROM pracownicy;

逻辑说明:当记录符合条件时,CASE返回1,否则返回NULL;COUNT()会自动忽略NULL值,最终统计的就是符合条件的记录总数。

方法二:INSTR函数(性能更优)

SELECT
  COUNT(CASE WHEN INSTR(LOWER(nazwisko), 'a') > 0 THEN 1 END) AS "Ile nazwisk z A",
  COUNT(CASE WHEN INSTR(LOWER(nazwisko), 'e') > 0 THEN 1 END) AS "Ile nazwisk z E"
FROM pracownicy;

逻辑说明:INSTR()函数返回指定字符在字符串中的位置,若结果大于0则表示存在该字符,后续统计逻辑同方法一。

方法三:REGEXP_LIKE(写法更简洁)

SELECT
  COUNT(CASE WHEN REGEXP_LIKE(nazwisko, 'a', 'i') THEN 1 END) AS "Ile nazwisk z A",
  COUNT(CASE WHEN REGEXP_LIKE(nazwisko, 'e', 'i') THEN 1 END) AS "Ile nazwisk z E"
FROM pracownicy;

逻辑说明:REGEXP_LIKE的第三个参数'i'表示不区分大小写,无需额外转换字符串大小写,直接匹配含a/A或e/E的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:42:09