[SQL] Weather Observation Station 6

이슬비·2022년 6월 24일
0

SQL

목록 보기
5/7
post-thumbnail

오랜만에 보는 연산자들 속출.

Weather Observation Station 6

1. 문제

문제는 간단하다.

city의 이름이 a, e, i, o, u로 시작하는 query들을 중복없이 반환하라는 것이다.

2. 풀이

select distinct city
from station
where city like 'a%' or city like 'e%' or city like 'i%' or city like 'o%' or city like 'u%';

일단 이게 내 풀이다. 내가 아는 like와 or을 이용한 최대의 풀이... 하지만 Or을 저렇게 여러 번 쓰는 게 너무 비효율적인 것 같아 보여 discussion에 들어가 확인해보았다.

SELECT DISTINCT(CITY) 
FROM STATION 
WHERE CITY RLIKE '^[aeiou]';

간만에 보는 (결론은 모르는) 연산자가 속출했다.

✅ Check Point

  • where 절의 like: 일부분이 일치하는지 확인할 때 사용함
    • _: 임의의 1개의 글자수에 해당 (2개 쓰면 2개의 문자는 임의로, 결론은 상관없다는 뜻)
    • %: 임의의 글자수에 해당 (A%라는 조건은 A로 시작하는 아무 문자열!)

  • [MySQL만 해당] where 절의 rlike: like와 동일한 쓰임을 가지지만, 문자를 선택할 수 있는 조건이 더 많음
    • .: 단일 문자에 해당 (like의 _와도 유사하지만 다름)
    • []: 괄호 내의 어떤 문자에 해당해도 반환
    • *: 여러 문자와 매칭
    • ^: 문자열에서 시작을 뜻함
    • $: 문자열에서 끝을 뜻함
  • 예시
    • 김이 들어가는 학생 조회
      select *
      from table
      where name like '%김%';
    • 홍으로 시작하고, 이름이 2글자로 이루어진 학생 조회
      select *
      from table
      where name like '홍__';
    • rlike의 .에 대한 추가 설명
      select *
      from table
      where name rlike '강....';
      // .은 단일 문자를 의미하므로, 위의 ....은 영문 4글자, 혹은 한글 2글자와 대응
      		// 이를 다르게 표현하면
      where name rlike '강.{4}';
profile
정말 알아?

0개의 댓글