-- Start
大家对 LIKE 语句应该都很熟悉,它是用来做模糊查询的。Oracle 还提供了 REGEXP_LIKE,让我们可以通过正则表达式来做模糊查询,下面是一个简单的例子。
CREATE TABLE EMPLOYEE ( ID NUMBER(10), NAME VARCHAR2(20), EMAIL VARCHAR2(60) ); INSERT INTO EMPLOYEE VALUES (1, 'zhang san', '[email protected];[email protected]'); INSERT INTO EMPLOYEE VALUES (2, 'wang mazi', '[email protected]');
SELECT * FROM EMPLOYEE WHERE UPPER(NAME) LIKE 'ZHANG%'; SELECT * FROM EMPLOYEE WHERE REGEXP_LIKE(NAME, '^zhang.*$', 'i');
i 表示不区分大小写 c 表示区分大小写 n 单行模式,也叫点号通配模式 m 多行模式,又称增强的行锚点模式 x 注释模式
REGEXP_SUBSTR 通过正则表达式查找子字符串 REGEXP_INSTR 通过正则表达式查找子字符串的位置 REGEXP_COUNT 通过正则表达式查找子字符串的数量 REGEXP_REPLACE 通过正则表达式替换
-- 查找第一个 EMAIL 地址 SELECT NAME, REGEXP_SUBSTR(EMAIL,'^[^;]+;?') FROM EMPLOYEE; -- 查找第一个 EMAIL 地址 SELECT NAME, REGEXP_REPLACE(EMAIL,';.*$') FROM EMPLOYEE; -- 查找 ; 的位置 SELECT NAME, REGEXP_INSTR(EMAIL,';') FROM EMPLOYEE; -- 查找 @ 的数量 SELECT NAME, REGEXP_COUNT(EMAIL,'@') FROM EMPLOYEE;
--更多参见:Oracle SQL 精萃
-- 声明:转载请注明出处
-- Last edited on 2015-02-26
-- Created by ShangBo on 2015-02-25
-- End