이름에 el 들어가는 동물 찾기

dongeranguk·2022년 1월 13일
0

프로그래머스 코테 연습 > String, Date > 이름에 el 들어가는 동물 찾기


문제

보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔습니다. 이 사람이 말하길 할머니가 기르던 개는 이름에 'el'이 들어간다고 합니다. 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다.


풀이과정

첫번째,

문제에서 이름에 el이 들어가는 개를 찾기 위해 아래와 같은 SQL문을 작성했다.

select animal_id, name
from animal_ins
where animal_type = 'Dog' and name like '%el%'
order by name;

두번째,

하지만, 이름이 Elijah 개는 조회되지 않는다. 따라서, 아래와 같이 '%El%'로 조회 해봣지만, 아래와 같이 조회 된다.

select animal_id, name
from animal_ins
where animal_type = 'Dog' and name like '%El%'
order by name

세번째,

그래서, '%el%' 과 '%El%' 로 조회해봤다. 고양이도 포함되어 조회된다.

select animal_id, animal_type, name
from animal_ins
where animal_type = 'Dog' and name like '%el%' or name like '%El%'
order by name;

고양이가 왜 포함되어 나올까 생각하다가, 다중 조건에 or 연산자를 사용하여 위와 같이 조회된다.

풀이하자면, animal_type이 'Dog' 이고(and), name에 'el'이 포함된 결과를 조회되고, 조건문이 여기서 한번 실행되고, 다시 or로 'El'이 포함된 동물을 조회하여, 고양이 Ella가 조회 되었다.


정답

select animal_id, name
from animal_ins
where animal_type = 'Dog' and name like '%el%' or animal_type = 'Dog' and name like '%El%'
order by name;

결론

  • 데이터 타입이 문자열(VARCHAR)인 컬럼은 논리연산자 = LIKE모두 사용할 수 있음을 알 수 있었다.

  • 다중 조건을 OR 연산자로 묶어줄 수 있다. 묶어줄 때, 앞의 조건(animal_type ='Dog')을 다시 명시해야 한다.

  • AND, OR 연산자 중 AND 연산자가 우선순위가 더 높긴 하지만, 혼선 방지를 위해 명시적으로 괄호를 사용하는 것이 좋다.


SELECT 1 OR 0 AND 0;
결과 : 1
SELECT 1 OR (0 AND 0);
결과 : 1


SELECT (1 OR 0) AND 0;
결과 : 0

0개의 댓글