5-1. REGEXP_LIKE
: 정규식 패턴을 가지고 있는 결과만 출력
형식
REGEXP_LIKE(텍스트, 정규식)
ex.
SELECT *
FROM t_reg
WHERE REGEXP_LIKE(text, '[a-z]'); --소문자 포함
WHERE REGEXP_LIKE(text, '[A-Z]'); --대문자 포함
WHERE REGEXP_LIKE(text, '[a-zA-Z]'); --대소문자 포함
WHERE REGEXP_LIKE(text, '[a-z] '); --소문자뒤에 띄어쓰기 한개 있는 패턴
WHERE REGEXP_LIKE(text, '[a-z] [0-9]'); -- 소문자 띄어쓰기 숫자 순서의 패턴
WHERE REGEXP_LIKE(text, '[[:space:]]'); -- 공백이 포함된 패턴
WHERE REGEXP_LIKE(text, '[[:digit:]]'); -- 숫자가 포함된 패턴
WHERE REGEXP_LIKE(text, '[A-Z]{3}'); -- 대문자 {} 중괄호는 갯수
WHERE REGEXP_LIKE(text, '[a-z]{6}'); -- 소문자 {} 중괄호는 갯수
WHERE REGEXP_LIKE(text, '[A-Z][0-9]{3}'); -- 대문자가 있고 뒤에 숫자가 있는데 그 숫자가 3자리
WHERE REGEXP_LIKE(text, '[0-9]{3}[A-Z]{3}'); -- 앞에 숫자, 뒤에 대문자가 있는데 그 대문자가 3자리
WHERE REGEXP_LIKE(text, '[a-zA-Z0-9]{3}'); -- 소문자, 대문자, 숫자 상관없이 3자리
-- '[a-z][A-Z][0-9]'); -- 소문자, 대문자, 숫자의 패턴으로.. 위에 거랑 다르다!
WHERE REGEXP_LIKE(text, '^[a-z]'); -- 소문자로 시작해야함
WHERE REGEXP_LIKE(text, '^[^a-z]'); -- 소문자로 시작하지 않아야함
WHERE REGEXP_LIKE(text, '[^a-z]'); -- 소문자로만 구성되어있는 경우 제외
WHERE NOT REGEXP_LIKE(text, '[a-z]'); -- 소문자가 포함되어 있는 패턴이 아닌거
WHERE REGEXP_LIKE(text, '^[a-zA-Z0-9]'); -- 소문자 or 대문자 or 숫자로 시작해야함
WHERE REGEXP_LIKE(text, '^[a-z]|^[0-9]'); -- 소문자 or 숫자로 시작해야함
WHERE REGEXP_LIKE(text, '!'); -- 특수문자 찾기 (?, *, . 등은 다른 용도가 있는 메타캐릭터, 메타캐릭터 문자를 찾으려면 앞에 이스케이프문자 붙여서 조건에 넣어줌)
-- ^01([0|1|6|7|8|9])-? 01로 시작하고 뒤에는 016789중에 하나가 올수있는데 뒤에 -가 있을수도 있고 없을수도 있다
5-2. REGEXP_REPLACE
: 정규식 패턴에 맞게 값 대체
형식
REGEXP_REPLACE(텍스트, 패턴, 변환형태)
ex. 모든 숫자를 특수 기호로 변경하기
SELECT text, REGEXP_REPLACE(text, '[[:digit:]]', '*') "NO -> CHAR"
FROM t_reg;
결과
5-3. REGEXP_SUBSTR
: 정규식 패턴에 맞게 문자열 자르기
형식 (출처 : https://www.haguangho.com/88)
REGEXP_SUBSTR(COLUMN, [REG_EXP], [START_INDEX], [GROUP_INDEX])
--COLUMN : 컬럼명을 지정
--REG_EXP : 정규표현식
--START_INDEX : 해당 정규표현식을 검색할 문자열의 INDEX 를 지정한다.
--GROUP_INDEX : 해당 정규표현식으로 잘라진 그룹의 INDEX
함수 이름 | 의미 | example |
---|---|---|
count | 입력되는 데이터들의 총 건수를 출력 | COUNT(sal) |
sum | 입력되는 데이터들의 합계값 구해서 출력 | SUM(sal) |
avg | 입력되는 데이터들의 평균값 구해서 출력 | AVG(sal) |
max | 입력되는 데이터들 중 가장 큰 값을 출력 | MAX(sal) |
min | 입력되는 데이터들 중 가장 작은 값을 출력 | MIN(sal) |
STDDEV | 입력되는 데이터값들의 표준 편차 값 출력 | STDDEV(sal) |
VARIANCE | 입력되는 데이터값들의 분산 값 출력 | VARIANCE(sal) |
: 특정 조건으로 세부적인 그룹화 하기
: 그룹핑한 조건으로 검색하기
SELECT deptno, AVG(NVL(sal, 0))
FROM emp
-- 아예 그룹하기 전에 제외할때는 WHERE..
WHERE deptno > 10
GROUP BY deptno
-- 그 그룹함수의 조건을 따질때는 HAVING..
HAVING ANG(NVL(sal, 0)) > 2000;