[MySQL] SELECT문 WHERE절 정규식 검색 (REGEXP)

(1) OR를 쓴 검색문을 정규식 검색문으로 바꾸기

SELECT * FROM test_table WHERE name LIKE '돼지' OR name LIKE '꿀꿀이';
SELECT * FROM test_table WHERE name REGEXP '^(돼지|꿀꿀이)$';
SELECT * FROM test_table WHERE name LIKE '%돼지%' OR name LIKE '%꿀꿀이%';
SELECT * FROM test_table WHERE name REGEXP '돼지|꿀꿀이';
  OR로 이어 붙인 조건문 2개(또는 여러 개)를 REGEXP로 정규 표현식을 쓴 조건문 1개로 바꾸어 나타낼 수 있다.

(2) 영문 로마자 1자 또는 2자로 시작하는 값 찾기

SELECT * FROM test_table WHERE name REGEXP '^[a-zA-Z]{1,2}';
  • 보기 : a, ab, aB, Ab, A가나, Ab가나, AAS, AG@D

(3) 영문 로마자로만 이루어진 값 찾기

SELECT * FROM test_table WHERE name REGEXP '^[a-zA-Z]+$';
  • 보기 : abc, ABC, aBC, aZc

(4) 길이가 3인 문자열 값 찾기

SELECT * FROM test_table WHERE name REGEXP '^...$';
  • 보기 : abc, ABC, !@#, 자갈치, 붕어빵, 가2나, 12개

(5) 완성형 한글이 들어간 값 찾기

SELECT * FROM test_table WHERE name REGEXP '[가-힣]';
  • 보기 : a한글, a한글b, 한글, a한b글

  [가-힣]는 가(U+AC00)와 힣(U+D7A3) 사이의 완성형 한글 낱내자 하나를 가리킨다.

(6) 완성형 한글만 들어간 값 찾기

SELECT * FROM test_table WHERE name REGEXP '^[가-힣]+$';
  • 보기 : 가, 가나, 가나다

(7) 완성형 한글로 끝나는 값 찾기

SELECT * FROM test_table WHERE name REGEXP '[가-힣]$';
  • 보기 : 가, 가나, 가나다, 123가, abc가나
글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요