Day 54

dokiru·2023년 4월 14일
0

학원

목록 보기
36/51
  1. 정규식 : 보통 조회할때 조건을 걸때 사용..

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

복수행 함수

  1. group 함수
함수 이름의미example
count입력되는 데이터들의 총 건수를 출력COUNT(sal)
sum입력되는 데이터들의 합계값 구해서 출력SUM(sal)
avg입력되는 데이터들의 평균값 구해서 출력AVG(sal)
max입력되는 데이터들 중 가장 큰 값을 출력MAX(sal)
min입력되는 데이터들 중 가장 작은 값을 출력MIN(sal)
STDDEV입력되는 데이터값들의 표준 편차 값 출력STDDEV(sal)
VARIANCE입력되는 데이터값들의 분산 값 출력VARIANCE(sal)

GROUP BY 절

: 특정 조건으로 세부적인 그룹화 하기

  1. GROUP BY 절에 사용된 컬럼이면 SELECT절에 사용 가능! (SELECT 절에 사용된 그룹함수 이외의 컬럼이나 표현식은 반드시 GROUP BY 절에 사용 되어야함. 그렇지 않은 경우 에러 발생)
  2. GROUP BY 절에는 반드시 컬럼명이 사용되어야 하고 컬럼 Alias(별칭)는 사용 X

HAVING 절

: 그룹핑한 조건으로 검색하기

SELECT deptno, AVG(NVL(sal, 0))
FROM emp
-- 아예 그룹하기 전에 제외할때는 WHERE..
WHERE deptno > 10
GROUP BY deptno
-- 그 그룹함수의 조건을 따질때는 HAVING..
HAVING ANG(NVL(sal, 0)) > 2000;
profile
안녕하세요!

0개의 댓글

Powered by GraphCDN, the GraphQL CDN