728x90
정규 표현식
숫자, 문자, 기호 등을 주어진 패턴으로 찾아내서 적용시키는 기법이다.
대부분 C, C++, ShellScript, Python, Java, ... 등의 프로그래밍 언어와 데이터 베이스의 PL/SQL사용된다.
^(~로 시작), $(~로 끝남)
[a-z] -> a~z 중 하나,
[a..f]-> a로 시작하고 f로 끝나는 총 4자리 문자,
^[a-f] -> a~f로 시작되지 않음,
[^ps] -> p나 s로 시작
LIKE
LIKE 연산자는 특정 패턴을 포함하는 데이터만을 검색하기 위해 사용한다.
Q. Employees 테이블에서 'K'으로 시작하는 이름(Name) 출력하시오.
SELECT * FROM EMmployees;
WHERE last_Name LIKE 'K%';
REGEXP
LIKE 연산자보다 더욱 복잡한 패턴을 검색하고 싶을 때는 REGEXP 연산자를 사용할 수 있다.
REGEXP 연산자는 정규 표현식을 토대로 하는 패턴 매칭 연산을 제공한다.
구분 | 배열 | 설명 |
REGEXP_LIKE | 검색_값, 패턴, .. 매치_옵션 | 색_값은 검색할 문자열, 패턴은 검색할 특정 문자, 매치_옵션은 찾고자 하는 문자 |
REGEXP_SUBSTR( | 검색_값, 패턴1, 패턴2, .. 매치_옵션 | 문자열에서 일부를 추출하고, 위치는 디폴트값으로 한다. |
REGEXP_REPLACE | 검색_값, 패턴, 대체_값, 위치, 발생, 매치_옵션 |
Q.제품의 이름 중에서 SS로 시작되면서, P를 포함하지 않는 제품을 찾아 보시오.
select product_name from product_information
where REGEXP_LIKE(product_name, 'SS[^P]');
Q. 제품의 이름 중에서 SS로 시작되면서 P나 S로 이어지는 제품을 찾아 보시오 .
select product_name from product_information
where REGEXP_LIKE(product_name, 'SS[PS]');
Q. customers 테이블에서 cust_first_name이 대문자A,소문자a 로 시작되지 않는 고객을 보이시오.
select cust_first_name from customers
where REGEXP_LIKE (cust_first_name, '^[Aa]');
Q. 고객의 cust_email 5개만 보이시오.
select cust_email from customers
where rownum <=5;
Q. 고객의 cust_email @앞에서 부터 5개만 보이시오.
select cust_email, REGEXP_SUBSTR(cust_email, '[^@]+' ) "CUST_ID" from customers
where nls_territory = 'ITALY'
and rownum <=5;
'일단 해보는 코딩 > Oracle SQL' 카테고리의 다른 글
[오라클/SQL] JOIN - INNER/OUTER/ON (0) | 2022.06.08 |
---|---|
[오라클/SQL] 테이블 생성,변경,삭제하기 (0) | 2022.06.03 |
[오라클/SQL] 함수 활용해보기(2) (0) | 2022.06.03 |
[오라클/SQL] 함수 활용해보기(1) (0) | 2022.06.02 |
[오라클/SQL] SQL규칙과 CMD 실행하기 (0) | 2022.06.01 |