REGEXP
는 SQL에서 정규 표현식(Regular Expression)을 사용하여 문자열 패턴을 검색하거나 필터링할 때 사용하는 연산자입니다.REGEXP_LIKE
함수로 유사하게 사용할 수 있습니다.기본 패턴
^[A]
→ 대문자 A로 시작하는 조건. [abc] = a, b or c
→ 대괄호 안의 문자 중 하나와 일치.[^abc] = a, b, c 빼고 뭐든지
→ 대괄호 안의 문자 제외한 모든 문자와 일치.[a-z] = a to z
→ 소문자 a부터 z까지의 모든 문자와 일치.[A-Z] = A to Z
→ 대문자 A부터 Z까지의 모든 문자와 일치.[a-zA-Z] = a to z, A to Z
→ 대소문자 모든 문자와 일치.[0-9] = 0 to 9
→ 숫자 0부터 9까지의 모든 숫자와 일치..
-> 정규표현식에서 점(.)은 임의의 한 문자를 의미합니다. 즉, 어떤 문자든지 한 개가 올 수 있다는 뜻입니다. 알파벳, 숫자, 공백 등 모든 문자를 포함합니다.*
-> 별표(*
)는 앞에 있는 패턴이 0번 이상 반복될 수 있음을 의미합니다. 즉, 앞에 있는 문자가 몇 번이든 나올 수 있다는 뜻입니다. 예를 들어, .*는 임의의 문자들이 0번 이상 등장할 수 있음을 나타냅니다.$
추가: 정규 표현식의 끝에 $를 추가하여 문자열이 정확히 @leetcode.com으로 끝나도록 설정해야 한다. 없으면 뒤에 추가적으로 오는 것을 검증하지 못함! 반복 패턴
[ ]? = 0번 혹은 1번 발생
→ 해당 패턴이 0번 또는 1번 발생.[ ]+ = 1번 혹은 더 발생
→ 해당 패턴이 1번 이상 발생.[ ]* = 0번 혹은 더 발생
→ 해당 패턴이 0번 이상 발생.[ ]{n} = n번 발생
→ 해당 패턴이 정확히 n번 발생.[ ]{n,} = n번 혹은 더 발생
→ 해당 패턴이 n번 이상 발생.[ ]{y,z} = y번 이상 z번 이하 발생
→ 해당 패턴이 y번 이상 z번 이하 발생.문제 1: 0이나 1로 시작하고 total digit = 11인 전화번호
[01][0-9]{10}
문제 2: 대문자로 시작하고, 소문자를 포함하고 있으며 중간에 숫자 하나만 허락되는 조건
[A-Z][a-z]*[0-9][a-z]*
문제 3: 이메일 형식 검증 (giwoo123@gmail.com
)
[A-Za-z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}
@
뒤 도메인과 최상위 도메인을 검사합니다.REGEXP
를 사용하면 SQL에서도 복잡한 문자열 패턴 검사를 수행할 수 있습니다.