ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스 MySQL,Oracle] - 이름에 el이 들어가는 동물 찾기
    Data Engineering/MySQL & Oracle 2021. 6. 28. 20:44

     

     

    [프로그래머스 String - 이름에 el이 들어가는 동물 찾기]

     

     

     

    MySQL

     

    *헷갈린 이유: "개의 아이디와 이름" 조건을 생각하지 못했다.

    → 테이블의 ANIMAL_TYPE에는 Dog, Cat이 존재함을 고려해줘야 한다.

    SELECT ANIMAL_ID, NAME
    FROM ANIMAL_INS
    WHERE NAME LIKE '%EL%' AND ANIMAL_TYPE='Dog'
    ORDER BY NAME

     

     

    Oracle

     

    오라클에서는 대소문를 구분하지 못한다. 그러므로 NAME을 대문자 또는 소문자로 바꿔서 비교해줘야 한다.

    SELECT ANIMAL_ID, NAME
    FROM ANIMAL_INS
    WHERE LOWER(NAME) LIKE '%el%' AND ANIMAL_TYPE='Dog'
    -- WHERE UPPER(NAME) LIKE '%EL%' AND ANIMAL_TYPE='Dog'
    ORDER BY NAME

     

     

     

     

     

    위의 방법으로 충분히 풀 수 있지만,

    새로운 방법을 알아보자.

     

     

     

     

     

    MySQL with REGEXP

     

    → 사실 MySQL은 대소문자를 구분하지 않아서 굳이 아래 방법을 사용하지 않아도 된다.

        단지, 오라클과 MySQL에서의 문법 차이를 보여주려고 사용한 것이다.

    SELECT ANIMAL_ID, NAME
    FROM ANIMAL_INS
    WHERE NAME REGEXP('EL|el') AND ANIMAL_TYPE='Dog'
    ORDER BY NAME

     

    Oracle with REGEXP_LIKE

     

    → 오라클은 대소문자를 구분하지 못해서 'EL|El|eL|el' 조건을 줘야 한다.

    %EL%, %El%, %eL', %el% 효과를 나타낸다. (즉, EL/ El/ eL/ el을 포함하는 단어를 의미함)

    SELECT ANIMAL_ID, NAME
    FROM ANIMAL_INS
    WHERE REGEXP_LIKE(NAME,'EL|El|eL|el') AND ANIMAL_TYPE='Dog'
    ORDER BY NAME

     

     

     

     

     

    <공부>

     

    📍 대소문자 구분

     MySQL → 대소문자를 구분하지 않는다.

     Oracle대소문자를 구분한다.

     

     

    📍 다중 LIKE 연산

    MySQL : 컬럼명 REGEXP(정규식)

    ex) NAME REGEXP('EL|el')

     

    Oracle : REGEXP_LIKE(컬럼명, 정규식)

    ex) REGEXP_LIKE(NAME, 'EL| El| eL| el')

     

     

    📍 그럼 정규식은 무엇일까?

    : 다양한 메타 문자들을 이용한 검색 방법이다. 아래는 주로 사용하는 정규 표현식이다.

     (조금 어렵지만 문제를 풀다보면 익숙해질 것이다!)

     

    사용 기호 의미 예시
    ^ 해당 문자로 시작하는 line 출력 ^pattern
    $ 해당 문자로 끝나는 line 출력 pattern$
    . A로 시작해서 B로 끝남 (.은 1개의 문자) S....E
    * (글자가 없는 것도 포함한) 모든 것 [a-z]*
    [] 해당 문자에 해당하는 하나의 문자 [Pp]attern
    [^] 해당 문자에 해당하지 않는 하나의 문자 [^a-m]attern

     

     

     

    댓글

Designed by Tistory.