보통 특정 문자로 시작하거나 끝나는 경우를 SQL에서 검사하기 위해 LIKE 연산자를 많이 사용한다.
그런데, 특정 문자 1개가 아니라 여러 개를 검사해야 하는 경우는 어떻게 하면 될까? 이와 관련한 문제 3개를 알아보자.
✔Table of Contents
1. 특정 문자들로 시작하는 도시 출력하기
STATION 테이블에서 모음(a, e, i, o, u)으로 시작하는 CITY를 출력하라. CITY의 중복은 포함하지 않는다.
문제 바로가기(클릭)
SQL에서 특정 문자로 시작하는 경우엔 LIKE '특정문자%' 를 사용하면 된다.
그런데 이렇게 특정 문자가 여러 개일 때는 어떻게 해야할까?
바로 OR를 사용하면 된다. (참고로 SQL은 대소문자를 구분하지 않으므로 A, E, I, O, U는 대문자로 쓰든 소문자로 쓰든 관계없다)
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%'
2. 특정 문자들로 끝나는 도시 출력하기
STATION 테이블에서 모음(a, e, i, o, u)으로 끝나는 CITY를 출력하라. CITY의 중복은 포함하지 않는다.
문제 바로가기(클릭)
SQL에서 특정 문자로 끝나는 경우엔 LIKE '%특정문자' 를 사용하면 된다.
이번에도 특정문자가 여러 개지만, 역시 OR를 사용하면 된다.
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'
3. 특정 문자들이 첫 번째와 마지막 번째에 반드시 들어가는 경우 출력하기
STATION 테이블에서 모음(a, e, i, o, u)으로 시작하고, 끝나는 CITY를 출력하라. CITY의 중복은 포함하지 않는다.
문제 바로가기(클릭)
이번엔 비슷하지만, 결이 좀 다른 문제이다.
예를 들어 A로 시작하고 A로 끝나는 것만 출력해야 한다면 LIKE 'A%A' 라고 쓸 수 있을 것이다.
하지만 여기선 A로 시작했지만 끝나는 것은 A 외에 E, I, O, U 중에 어떤 것으로 끝나든 상관없다.
이런 식으로 경우의 수가 너무 많은 경우 LIKE 연산자를 쓰기 어렵다.
그래서 이번에는 CITY의 가장 첫번째 글자를 LEFT 함수로 떼어내고, 모음이 해당하는지를 IN 연산자로 검사하였다.
마찬가지로 가장 마지막 글자는 RIGHT 함수로 떼어내고 IN 연산자로 검사한다.
SELECT DISTINCT CITY
FROM STATION
WHERE LEFT(CITY, 1) IN ('A', 'E', 'I', 'O', 'U')
AND RIGHT(CITY, 1) IN ('A', 'E', 'I', 'O', 'U')
반응형
'Skillset > SQL' 카테고리의 다른 글
SQL로 깔끔한 문장 출력하기 (CONCAT 활용) (0) | 2022.08.10 |
---|---|
SQL 중첩된 CASE WHEN 구문 활용: 삼각형의 타입 구분하기 (0) | 2022.08.09 |
[MySQL] 가장 짧은 글자와 가장 긴 글자에 해당하는 도시 구하기 (LENGTH) (0) | 2022.08.07 |
[MySQL] RECURSIVE 구문 활용해 배열 생성하기 예제 (feat. 빅쿼리 UNNEST) (0) | 2022.06.23 |
SQL N번째 순위 추출하기(2번째로 큰 값, 상위 N개, 하위 N개 구하기) (1) | 2022.06.14 |