[SQL] LIKE vs REGEXP

Gi Woon Lee·2024년 9월 8일
0

TIL

목록 보기
60/78

TIL: SQL에서 REGEXPLIKE의 차이점

오늘은 SQL에서 문자열 검색을 할 때 자주 사용하는 REGEXPLIKE의 차이점에 대해 정리해보았습니다. 각각의 사용법과 어떤 상황에 적합한지 예시와 함께 설명합니다.

1. LIKE

  • 기본 개념: LIKE는 SQL에서 간단한 문자열 검색에 사용되는 연산자입니다. 주로 특정 패턴이나 부분 문자열을 포함하는 데이터를 찾을 때 사용됩니다.

  • 와일드카드:

    • %: 0개 이상의 모든 문자와 매칭됩니다.

      • 예시:
        SELECT * FROM Patients WHERE conditions LIKE '%DIAB1%';
        이 쿼리는 conditions 컬럼에서 "DIAB1"이라는 텍스트가 어디에 위치하든 포함된 모든 레코드를 찾습니다. 예를 들어, "PRE_DIAB1", "DIAB1_POST" 등도 포함됩니다.
    • _: 정확히 한 문자와 매칭됩니다.

      • 예시:
        SELECT * FROM Users WHERE username LIKE 'A_e';
        이 쿼리는 username 컬럼에서 "A"로 시작하고, 중간에 어떤 문자 하나가 오며, "e"로 끝나는 문자열을 찾습니다. 예를 들어, "Ace", "Abe" 등이 매칭됩니다.
  • 적합한 경우: 단순한 문자열 부분 검색이나 특정 단어 포함 여부를 확인할 때 유용합니다.

2. REGEXP

  • 기본 개념: REGEXP는 정규 표현식을 사용하여 복잡하고 정교한 패턴 매칭을 지원하는 기능입니다. 특정 문자 조합, 반복, 선택 조건 등을 사용할 수 있어 다양한 문자열 규칙을 구현할 수 있습니다.

  • 기능과 예시:

    • .: 정확히 한 문자와 매칭.

      • 예시:
        SELECT * FROM Patients WHERE conditions REGEXP 'DIAB.';
        이 쿼리는 "DIAB" 뒤에 아무 문자나 하나가 오는 경우를 찾습니다. 예를 들어, "DIAB1", "DIAB2" 등과 매칭됩니다.
    • *: 앞의 패턴이 0번 이상 반복될 수 있음을 의미.

      • 예시:
        SELECT * FROM Logs WHERE message REGEXP 'error.*fail';
        이 쿼리는 message 컬럼에서 "error"로 시작하고, 그 뒤에 어떤 문자나 글자가 0번 이상 나오며, "fail"로 끝나는 문자열을 찾습니다. 예를 들어, "error occurred and fail" 등이 매칭됩니다.
    • ^$: 문자열의 시작과 끝을 지정.

      • 예시:
        SELECT * FROM Emails WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$';
        이 쿼리는 이메일 형식이 올바른지 확인합니다. ^는 문자열의 시작, $는 문자열의 끝을 의미하며, 이 정규 표현식은 이메일 형식에 맞는 모든 텍스트를 필터링합니다.
  • 적합한 경우: 복잡한 패턴, 반복 규칙, 문자 집합 등 세밀한 조건을 설정해야 하는 경우 사용됩니다.

3. 주요 차이점

  • 복잡성: LIKE는 간단하고 사용하기 쉬운 반면, REGEXP는 정교한 패턴을 설정할 수 있어 복잡한 문자열 검색에 적합합니다.
  • 유연성: REGEXP는 다양한 패턴 매칭을 지원하며, LIKE보다 훨씬 유연한 조건을 설정할 수 있습니다.
  • 성능: LIKE는 단순한 검색에서 빠르게 동작하지만, REGEXP는 복잡한 패턴 매칭을 처리할 때 성능이 느려질 수 있습니다.

4. 언제 사용해야 할까?

  • LIKE: 단순한 텍스트 검색, 부분 문자열 포함 여부 확인 등 간단한 패턴 매칭이 필요한 경우.
  • REGEXP: 반복되는 패턴, 특정 문자 집합 매칭, 시작/끝 위치 지정 등 복잡한 조건을 설정할 때.

이번 TIL을 통해 LIKEREGEXP의 차이를 이해하고, 각각의 강점과 사용 시점을 배울 수 있었습니다. 앞으로 SQL 쿼리를 작성할 때 상황에 맞는 검색 도구를 선택해 데이터 처리에 효율을 높일 수 있을 것 같습니다!

0개의 댓글