oracle 8 与oracle 9i中缺乏灵活性的sql 正则表达式最终在oracle 10g中得到了解决。oracle 数据库目前内建了符合posix 标准的正则表达式。
posix 正则表达式由标准的元字符(metacharacters)所构成: 【相关文章:一步一步教你加密解密技术——静态分析技术】
四个新的函数分别是:regexp_like、regexp_instr、regexp_substr、与 regexp_replace。它们在用法上与oracle sql 函数like、instr、substr 与replace 用法,但是它们使用posix 正则表达式代替了老的百分号(%)与通配符(_)字符。 【扩展阅读:一步一步教你加密解密技术——前言&基础知】
regexp_like 与like 操作符相似。如果第一个参数匹配正则表达式它就解析为true。例如where regexp_like(ename,^j[ao],i) 将在ename 以ja 或jo 开始的情况下返回一行数据。i 参数指定正则表达式是大小写敏感的。另外还可以在check 约束与函数索引中指定regexp_like。例如: 【扩展信息:网络故障实例:WinGate闯祸引发IP】
^ 表示字符串的开始 $ 表示字符串的结束 . 表示任何字符 字符的范围,比如说[a-z],表示任何ascii 小写字母,与字符类"[[:lower:]]"" 等价 ? 允许一个后继字符匹配零次或一次 + 允许一个后继字符匹配一次或多次 * 表示零次或多次可以使用"{m,n}" 指定一个精确地出现范围,其意思是“出现从m 次到n 次”;"{m}" 表示“正好m次”;而"{m,}" 表示“至少m次”。还可以使用圆括号组合字符的集合,使用"|"(竖线)表示可替换。例如,字符串^([a-z]+|[0-9]+)$将匹配所有由小写字母或数字组合成的字符串。
alter table emp add constraint regex01
check (regexp_like(ename,^[[:alpha:]]+$)); ... 下一页