본문 바로가기
데이터/SQL

[MySQL] 정규 표현식(instr(), like(), replace(), substr())

by 찌노오 2022. 10. 31.

 

 

 

 

정규 표현식이란

정규식 또는 정규 표현식은 문자열에서 일치하는 패턴을 찾아내는 데 쓰이는 형식 언어이다.

정규식에 대한 자세한 내용은 나중에 따로 정리해두겠지만, 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 반환

 

 

 

 

 

 

 

 

 

반응형

댓글