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

Oracle查询含[A-X]_A格式子串的FIRST_NAME无数据问题求解

Oracle LIVE SQL 字符匹配无结果问题解决

问题根因

你使用的[]字符范围语法不属于Oracle原生LIKE运算符的支持范围。Oracle LIKE仅支持%(匹配0/多个任意字符)、_(匹配1个任意字符)两个通配符,你写的%[A-X]_A%会被系统识别为匹配包含字面量字符串[A-X]+任意单个字符+字母A的内容,自然返回无数据。

解决方案

方案1:使用Oracle正则匹配函数REGEXP_LIKE(推荐)

直接用正则匹配函数实现你的规则,查询语句如下:

SELECT FIRST_NAME
FROM HR.EMPLOYEES
WHERE REGEXP_LIKE(FIRST_NAME, '[A-X].A');

规则说明:

  • [A-X]匹配首位A到X范围内的大写字母
  • .匹配中间任意单个字符
  • A匹配第三位的A字符
  • REGEXP_LIKE默认匹配字符串中任意位置的符合规则子串,不需要额外加前后通配符

如果需要兼容小写姓名,可添加第三个参数'i'关闭大小写敏感:

SELECT FIRST_NAME
FROM HR.EMPLOYEES
WHERE REGEXP_LIKE(FIRST_NAME, '[A-X].A', 'i');

方案2:原生语法实现(无正则依赖)

如果需要兼容不支持正则函数的旧Oracle版本,可通过字符截取和范围判断实现:

SELECT DISTINCT FIRST_NAME
FROM HR.EMPLOYEES e
WHERE EXISTS (
    SELECT 1
    FROM (SELECT LEVEL AS pos FROM DUAL CONNECT BY LEVEL <= LENGTH(e.FIRST_NAME) - 2)
    WHERE SUBSTR(e.FIRST_NAME, pos, 1) BETWEEN 'A' AND 'X'
      AND SUBSTR(e.FIRST_NAME, pos + 2, 1) = 'A'
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 06:06:02