# Oracle常用正则表达式

  • REGEXP_LIKE :与LIKE的功能相似
  • REGEXP_INSTR :与INSTR的功能相似
  • REGEXP_SUBSTR :与SUBSTR的功能相似
参数 释义
source_string 源串,可以是常量,也可以是某个值类型为串的列
position 从源串开始搜索的位置。默认为1
occurrence 指定源串中的第几次出现。默认值1
match_parameter 文本量,进一步订制搜索
  • REGEXP_REPLACE : 与REPLACE的功能相似

# 示例

--替换数据库中所有的非数字的字符
SELECT
     REGEXP_REPLACE (tel,'[^0-9]+',  '')  AS A
FROM
     lt_imp_cust_0519b;
--查询value中以1开头60结束的记录并且长度是7位
select * from chwtable where value like '1____60';
select * from chwtable where regexp_like(value,'1....60');
--查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。
--使用like就不是很好实现了。
select * from chwtable where regexp_like(value,'1[0-9]{4}60');
-- 也可以这样实现,使用字符集。
select * from chwtable where regexp_like(value,'1[[:digit:]]{4}60');
-- 查询value中不是纯数字的记录
select * from chwtable where not regexp_like(value,'^[[:digit:]]+$');
-- 查询value中不包含任何数字的记录。
select * from chwtable where regexp_like(value,'^[^[:digit:]]+$');
--查询以12或者1b开头的记录.不区分大小写。
select * from chwtable where regexp_like(value,'^1[2b]','i');
--查询以12或者1b开头的记录.区分大小写。
select * from chwtable where regexp_like(value,'^1[2B]');
-- 查询数据中包含空白的记录。
select * from chwtable where regexp_like(value,'[[:space:]]');
--查询所有包含小写字母或者数字的记录。
select * from chwtable where regexp_like(value,'^([a-z]+|[0-9]+)$');
--查询任何包含标点符号的记录。
select * from chwtable where regexp_like(value,'[[:punct:]]');