정규 표현식이란
정규식 또는 정규 표현식은 문자열에서 일치하는 패턴을 찾아내는 데 쓰이는 형식 언어이다.
정규식에 대한 자세한 내용은 나중에 따로 정리해두겠지만, SQL에서도 쓸 수 있기에 함수만 아래와 같이 정리했다.
정규식 함수 및 연산자
NOT REGEXP | 정규식의 부정 |
REGEXP | 문자열이 정규식과 일치하는지 여부 |
REGEXP_INSTR() | 정규식과 일치하는 부분의 문자열의 시작 인덱스 |
REGEXP_LIKE() | 문자열이 정규식과 일치하는지 여부 |
REGEXP_REPLACE() | 문자열이 정규식과 일치하는 부분을 바꾸기 |
REGEXP_SUBSTR() | 문자열이 정규식과 일치하는 부분을 반환 |
RLIKE | 문자열이 정규식과 일치하는지 여부 |
출처: https://dev.mysql.com/doc/refman/8.0/en/regexp.html
정규식 주요 함수의 활용
REGEXP_INSTR(expr, pat[ , pos[, occurrence[, return_option[, match_type] ] ] ] )
특정한 패턴(pat)과 일치하는 정규표현식과 일치하는 문자열(expr) 내의 시작되는 문자의 인덱스를 반환한다.
(만약 일치하는 것이 없다면 0을 반환, pat이나 expr이 NULL이면 반환값도 NULL)
REGEXP_INSTR()의 다음과 같은 인수를 사용한다.
- pos: expr의 검색 시작위치 설정, 생략하면 기본값은 1
- occurrence: 검색할 일치 항목의 발생, 즉 패턴과 일치하는 문자열이 하나 이상라면 몇 번째 값을 가져올지를 설정할 수 있음, 생략하면 기본값은 1
- return_option: 반환할 위치 유형
- match_type: 매칭 방법을 지정하는 인수, REGEXP_LIKE의 match_type과 같음
- c: 대소문자를 구분하는 일치
- i: 대소문자를 구분하지 않는 일치
- m: 다중 라인 모드. 문자열 내에서 줄 종결자를 인식합니다. 기본 동작은 문자열 식의 시작과 끝에서만 줄 종결자를 일치시키는 것
- n: . 문자가 줄 종결자와 일치합니다. 기본값은 .줄 끝에서 일치를 중지하는 것
- u: Unix 전용 줄 끝. .줄 바꿈 문자만 , ^및 $일치 연산자 로 끝나는 줄로 인식
SELECT REGEXP_INSTR('dog cat dog', 'dog') # '1'을 반환
SELECT REGEXP_INSTR('dog cat dog', 'dog', 2) # '9'을 반환
REGEXP_SUBSTR(expr, pat[, pos[, occurrence[, match_type]]])
패턴(pat)과 일치하는 정규표현식과 일치하는 문자열(expr)의 문자를 반환한다.
(만약 일치하는 것이 없다면 NULL을 반환, pat이나 expr이 NULL이면 반환값도 NULL)
REGEXP_SUBSTR()의 다음과 같은 인수를 사용한다.
- pos: expr의 검색 시작위치 설정, 생략하면 기본값은 1
- occurrence: 검색할 일치 항목의 발생. 생략하면 기본값은 1
- match_type: 매칭 방법을 지정하는 인수, 상단 동일
SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+') # abc 반환
SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+', 1, 3) #영문자가 나오는 3번째 위치의 값, ghi 반환
반응형
'데이터 > SQL' 카테고리의 다른 글
[MySQL] ST_DISTANCE_SPHERE 함수를 활용하여 거리/반경 구하기 (0) | 2023.05.05 |
---|---|
[MySQL] Order by 구문으로 숫자가 정렬되지 않을 때 (0) | 2022.11.16 |
[MySQL] 없는 시간 표시하기(재귀적 CTE) (0) | 2022.10.26 |
[MySQL] 날짜 형식/포맷 변환 함수- DATE_FORMAT (0) | 2022.10.20 |
[SQL] 윈도우 함수(Window Functions) (0) | 2022.10.18 |
댓글