select *
from emp
where regexp_like(ename, 'A');
select *
from emp
where regexp_like(ename, 'A.E');
select *
from emp
where regexp_like(ename, 'L+');
select *
from emp
where regexp_like(ename, '[AB]');
select *
from emp
where regexp_like(ename, '[^AB]');
select *
from emp
where regexp_like(ename, '^A');
select *
from emp
where regexp_like(ename, 'N$');
select *
from emp
where regexp_like(ename, '^A.*N$');
select *
from emp
where regexp_like(ename, '[A-D]');
§문제) 다음의 테이블 데이터 중 아래의 regular expression을
만족하는 데이터는 무엇입니까?
regular expression: '[^Ale|ax.r$]'
NO NAME
------ -----------
1 Alex
2 Alax
3 Alexer
4 Alexendar
5 Alexender
drop table t_names;
create table t_names (
no number
, name varchar2(30)
);
insert into t_names values (1, 'Alex');
insert into t_names values (2, 'Alax');
insert into t_names values (3, 'Alexer');
insert into t_names values (4, 'Alexendar');
insert into t_names values (5, 'Alexender');
commit;
select * from t_names
where regexp_like(name, '[^Ale|ax.r$]');
NO NAME
---------- ------------------------------
4 Alexendar
5 Alexender
'[^Alex|ax.r$]' ==> NOT IN ('A', 'l', 'e', 'x', '|', 'a', '.', 'r', '$')
NO NAME
------ -----------
1 Alex ==> 'A', 'l', 'e', 'x'가 위 리스트에 모두 포함 ==> 탈락
2 Alax ==> 'A', 'l', 'a', 'x'가 위 리스트에 모두 포함 ==> 탈락
3 Alexer ==> 'A', 'l', 'e', 'x', 'r'이 위 리스트에 모두 포함 ==> 탈락
4 Alexendar ==> 'n', 'd'는 위 리스트에 포함되어 있지 않으므로 ==> 통과
5 Alexender ==> 'n', 'd'는 위 리스트에 포함되어 있지 않으므로 ==> 통과
----------------
cf.) select * from t_names
where regexp_like(name, '^Ale|ax.r$');
↕ ↕ ↕
select * from t_names
where regexp_like(name, '^Ale')
or regexp_like(name, 'ax.r$');
§예제 두가지
http://goo.gl/FyNSq
'Oracle > SQL Fundamentals II' 카테고리의 다른 글
15일차 # Meta Characters (Metasymbols) (0) | 2012.04.24 |
---|---|
15일차 # 8 Regular Expression (정규표현식) (0) | 2012.04.24 |
15일차 # 추가 (0) | 2012.04.24 |
15일차 # sys_connect_by_path 함수 (0) | 2012.04.24 |
15일차 # 정렬: Order siblings by (0) | 2012.04.24 |