정규식이 시험에 나온다고??? 기본적인 정규식을 알아보자 ㅎㅎ
REGEXP 란?
like 검색과는 달리 정규식을 이용한 검색 방식을 말한다. REGEXP는 우리에게 like보다 좀 더 다양한 검색을 할 수 있도록 도움을 준다.
SELECT *
FROM TEST
WHERE NAME REGEXP '가'
NAME 열에 '가'를 포함한 모든 행을 출력한다.
(where name like '%가%') 의 쿼리와 동일하다.
SELECT *
FROM TEST
WHERE NAME REGEXP '[가-힇]' # 한글이 **포함**된 모든 행을 검색한다.
WHERE NAME REGEXP '^[가-힇]+$' # **한글로만!** 구성된 행을 검색한다.
매칭
패턴 | 기능 | 사용예시 | 설명 |
---|---|---|---|
. | 문자 하나 | ‘…’ | 문자열의 길이가 세 글자 이상인 것을 찾음 |
or을 나타냄 | ‘A | ||
[] | [] 안에 나열된 패턴에 해당하는 문자열을 찾음 | ‘[123]d’ | 대상 문자열에서 ‘1d’ 또는 ‘2d’ 또는 ‘3d’인 문자열을 찾음 |
^ | 시작하는 문자열을 찾음 | ‘^A’ | ‘A’로 시작하는 문자열을 찾음 |
$ | 끝나는 문자열을 찾음 | ‘A$’ | ‘A’ 로 끝나는 문자열을 찾음 |
횟수( times)
패턴 | 기능 | 사용 예시 | 설명 |
---|---|---|---|
* | 0회 이상 나타나는 문자 | ‘*A’ | ‘A’가 0회 이상 등장하는 문자열을 찾음. ‘B’, ‘A’, ‘AA’ 모두 해당 |
+ | 1회 이상 나타나는 문자 | ‘찌깨+’ | ‘찌개’가 1회 이상 등장하는 문자열을 찾음. ‘김치찌개’, ‘된장찌개’, ‘부대찌개’ 모두 해당 |
{m,n} | m회 이상 n회 이하 나타나는 문자 | ‘치{1,2}’ | ‘치’가 1회 이상, 2회 이하 등장하는 문자열을 찾음. ‘치커리’, ‘치카치카’ 모두 해당 |
? | 0-1회 나타나는 문자 | ‘[가나다]?’ | ‘가’ 또는 ‘나’ 또는 ‘다’ 가 0-1회 등장하는 문자열을 찾음. ‘가지마’, ‘나라’, ‘안녕’ 모두 해당 |
그룹 형태 (group)
패턴 | 기능 | 사용 예시 | 설명 |
---|---|---|---|
[A-z] 또는 [:alpha:] 또는 \a | 알파벳 대문자 또는 소문자인 문자열을 찾음 | ‘[A-z]+’ | 대상 문자열에서 알파벳이 한 개 이상인 문자열을 찾음 |
[MySQL] 정규표현식 검색하기 REGEXP, LIKE
SELECT SEARCH_TEXT
FROM search_tbl
WHERE SEARCH_TEXT REGEXP '헤이|모두들|안녕|내가|누군지|아니'
위처럼 REGEXP라는 정규식을 사용하면 like 와 in을 동시에 사용한 것과 같이 SEARCH_TEXT라는 컬럼 로우에 ‘헤이, 모두들, 안녕, 내가, 누군지, 아니’ 이 6개 단어중에 하나라도 포함이 된 로우는 전부 출력해준다.
https://yamea-guide.tistory.com/entry/MySqlMariaDB-Like-in-같이-쓰기-해결책-REGEXP