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

Oracle数据库如何筛选列中含'demo'后跟数字的记录

正确的Oracle查询方法

原语句select * from table where NAME like 'demo';仅会匹配NAME完全等于'demo'的记录(即ID=3的条目),无法筛选出'demo'后跟随数字的目标记录(ID=1、2),以下是两种可行的解决方案:

方法1:使用正则表达式函数REGEXP_LIKE

Oracle原生支持REGEXP_LIKE进行正则匹配,可精准匹配以'demo'开头且后续至少包含一个数字的字符串:

SELECT * FROM table 
WHERE REGEXP_LIKE(NAME, '^demo[0-9]+$');
  • ^demo:限定字符串以'demo'开头
  • [0-9]+:匹配至少一个阿拉伯数字
  • $:限定字符串结尾为数字,确保'demo'后仅存在数字(若需允许数字后还有其他字符,可删除$)

若需匹配'demo'后带有数字、且数字后可包含任意内容的记录,可修改为:

SELECT * FROM table 
WHERE REGEXP_LIKE(NAME, '^demo[0-9]');

方法2:结合LIKE与TRANSLATE函数(兼容旧版本Oracle)

如果你的Oracle版本不支持正则函数,可通过字符串处理函数实现:

SELECT * FROM table 
WHERE NAME LIKE 'demo%'
AND TRANSLATE(SUBSTR(NAME, LENGTH('demo') + 1), '0123456789', '##########') IS NOT NULL;
  • NAME LIKE 'demo%':先筛选所有以'demo'开头的记录
  • SUBSTR(NAME, LENGTH('demo') + 1):截取'demo'之后的子字符串
  • TRANSLATE(...) IS NOT NULL:将截取到的子串中的数字替换为#,若结果不为空则说明原字符串'demo'后存在数字

测试结果

针对你提供的测试数据,上述两种方法都会返回以下结果:

ID    NAME
------------
1     demo20
2     demo26

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:10:39