简介

oracle: like、regexp_like、REGEXP_REPLACE、REGEXP_INSTR、REGEXP_SUBSTR

oracle

使用LIKE操作符:用LIKE进行某个字符串值的通配符匹配,来选出某些行,查询条件中既可以包含字符,也可以包含数字.

一.like

1.     % 代表0个或者多个字符.

select * from emp where en    ame like 'S%';

EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
----- ------ --------- ----- --------- ----- ----- ------
 7369 SMITH  CLERK      7902 17-DEC-80   800           20

 7788 SCOTT  ANALYST    7566 19-APR-87  3000           20

如果要匹配%这个字符,可以用\%来表示.

create table t(id number,name varchar2(10));

insert into t values(1,'ab');

insert into t values(2,'a_b');

 insert into t values(3,'ab');
 insert into t values(4,'a%b');
 insert into t values(5,'a%b_');
 commit;

转义符可以使用任何符号,但是必须成对出现

SQL> select * from t where name like '%\_%' escape '\';

        ID NAME
---------- ----------
         2 a_b
         5 a%b_

SQL> select * from t where name like '%A_%' escape 'A';

        ID NAME
---------- ----------
         2 a_b
         5 a%b_

SQL> select * from t where name like '%B_%' escape 'B';

        ID NAME
---------- ----------
         2 a_b
         5 a%b_

 2.    _ 代表一个字符.

select * from emp where ename like 'ALL_N';

oracle模糊查询



二.regexp_like

语法:

REGEXP_LIKE   (source_char, pattern [,match_option]

EG:

select first_name, last_name
  from employees
 where regexp_like(first_name, '^Ste(v|ph)en$');--搜索以Ste开头以en结尾中间包含v或者ph的字符串,其中字符前的'^'表示前精确,'$'表示后精确

oracle模糊查询

select * from test where regexp_like(payment, '(运维|网络)');--搜索字符串中包含运维或者网络的字符串

oracle模糊查询

2. REGEXP_REPLACE:使用正则表达式进行查找替换

语法:

REGEXP_REPLACE(source_char, pattern [,replacestr
                [, position [, occurrence

                [, match_option]]]])

EG:

select phone_number,regexp_replace(phone_number,'\.','-') new_value from employees;

oracle模糊查询

3. REGEXP_INSTR:使用正则表达式返回满足正则表达式的子串在父串中的位置

语法:REGEXP_INSTR  (source_char, pattern [, position
               [, occurrence [, return_option
               [, match_option [, subexpr]]]]])

EG:

select STREET_ADDRESS,
       regexp_instr(STREET_ADDRESS, '[[:alpha:]]') as first_alpha_position
  from locations;

    oracle模糊查询

4. REGEXP_SUBSTR:

语法:
REGEXP_SUBSTR (source_char, pattern [, position
               [, occurrence [, match_option
               [, subexpr]]]])

source_char:需要进行正则处理的字符串
pattern :进行匹配的正则表达式
position :起始位置,从第几个字符开始正则表达式匹配(默认为1)
occurrence :标识第几个匹配组,默认为1

EG:

select STREET_ADDRESS, regexp_substr(STREET_ADDRESS, ' [^ ]+') as Road

  from locations

oracle模糊查询


相关文章: