본문 바로가기
Database

[Oracle] REGEXP_LIKE()

by JJH0100 2022. 11. 7.
728x90
반응형

정규식(Regular Expression) 함수로 다양한 조건 조회하는데 사용된다.

사용 기호       사 용 예
^ (캐럿) 해당 문자로 시작하는 line 출력 ‘^pattern’
$ (달러) 해당 문자로 끝나는 line 출력 ‘pattern$’
. S로 시작하여 E으로 끝나는 line ( . è 1 character) ‘S . . . .E ’
* 모든 이라는 뜻. 글자수가 0 일수도 있음. ‘[a–z]*’
[ ] 해당 문자에 해당하는 한 문자 ‘[Pp]attern
[ ^ ] 해당 문자에 해당하지 않는 한 문자 ‘[^a–m]attern

 

-- p.80 연습문제
SELECT * FROM t_reg;

-- p.81 소문자를 포함하는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[a-z]');

-- p.81 대문자를 포함하는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[A-Z]');

-- p.82 대문자나 소문자를 포함하는 행 모두 출력
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[a-z A-Z]');

-- p.83 대문자나소문자로 시작하고 뒤에 공백 있는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[a-z] ');

-- p.83 소문자로 시작하고 가운데 공백 1칸 오고 숫자 있는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[a-z] [0-9]');

-- p.84 공백이 있는 모든 행 
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[[:space:]]');

-- p.85 대문자가 연속적으로 2 글자 이상 있는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[A-Z]{2}');

-- p.85 대문자가 연속적으로 3 글자 이상 있는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[A-Z]{3}');

-- p.85 대문자가 연속적으로 4 글자 이상 있는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[A-Z]{4}');

-- p.86 숫자가 연속적으로 3글자 이상 오는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[0-9]{3}');

-- p.87 영어 대문자와 숫자가 연속적으로 오되 대문자가 연속적으로 3글자 있는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[A-Z][0-9]{3}');

-- p.87
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[0-9][A-Z]{3}');

-- p.87 대문자가 들어가는 모든 행 출력(1)
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[A-Z]');

-- p.87 대문자가 들어가는 모든 행 출력(2)
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[[:upper:]]');

-- p.88 첫 시작이 대문자나 소문자인 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '^[A-Za-z]');

-- p.88 첫 시작이 숫자나 대문자인 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '^[0-9A-Z]');

-- p.89 소문자나 숫자로 시작하는 모든 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '^[a-z]|^[0-9]');

/*
p.90
student 테이블에서 학생의 id 중에서 첫 글자가 M 으로 시작하고 
두 번째 글자가 a 나 o 가 오는 id 를 이름과 함께 출력하기
*/
SELECT name, id
FROM student
WHERE REGEXP_LIKE(id, '^M(a|o)');


-- p.90 $ 문자를 사용하여 소문자로 끝나는 행을 출력하기(1)
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[a-zA-Z]$');

-- p.90 $ 문자를 사용하여 소문자로 끝나는 행을 출력하기(2)
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[[:alpha:]]$');

-- p.91 소문자로 시작하지 않는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '^[^a-z]');

-- p.91 숫자로 시작하지 않는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '^[^0-9]');

-- p.92 소문자나 숫자로 시작하지 않는 행
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '^[^0-9a-z]');

-- p.93 소문자로만 구성된 행 제거
SELECT * FROM t_reg
WHERE REGEXP_LIKE(text, '[^a-z]');

-- p.94 소문자가 들어 있는 모든 행 제거
SELECT * FROM t_reg
WHERE NOT REGEXP_LIKE(text, '[a-z]');

-- p.95 
-- student 테이블에서 지역번호가 2 자리이고  
-- 그 다음 국번이 연속적으로 4 자리가 나오는 값을 출력하기
SELECT name, tel
FROM student
WHERE REGEXP_LIKE(tel, '^[0-9]{2}\)[0-9]{4}');

-- p.96 
-- student 테이블에서 학생의 id 에서 4번째 자리에 r(소문자) 이 있는 행을 출력
SELECT name, id
FROM student
WHERE REGEXP_LIKE(id, '...r.');

-- .r을 하면 2번째부터 r을 포함한 보든 문자가 보임
SELECT name, id
FROM student
WHERE REGEXP_LIKE(id, '.r');

-- .r.을 하면 2번째부터 r을 포함한 보든 문자 중 r뒤에 문자가 적어도 1개가 있어야함
SELECT name, id
FROM student
WHERE REGEXP_LIKE(id, '.r.');

 

728x90
반응형

'Database' 카테고리의 다른 글

[MySQL] MySQL 설치  (0) 2022.11.22
[Oracle] SQL 복수행 함수 - GROUP 함수  (0) 2022.11.08
[Oracle] CASE()  (0) 2022.11.07
[Oracle] DECODE( ) 연습문제  (0) 2022.11.07
[Oracle] DECODE( )  (0) 2022.11.07

댓글