상세 컨텐츠

본문 제목

[MYSQL] 특정 자릿수의 특정 문자 조회

SQL

by ollive 2024. 10. 25. 10:17

본문

https://www.hackerrank.com/challenges/weather-observation-station-6?isFullScreen=true

 

Weather Observation Station 6 | HackerRank

Query a list of CITY names beginning with vowels (a, e, i, o, u).

www.hackerrank.com

Station표의 City열에서 첫 번째 자릿수의 문자열이 A,E,I,O,U로 시작하는 행만 추출

/*
CITY names starting with vowels (i.e., a, e, i, o, or u) 
not contain duplicates.
*/
SELECT
    DISTINCT City
FROM
    Station
조건 1
WHERE  
    City REGEXP '^a'
    OR City REGEXP '^e'
    OR City REGEXP '^i'
    OR City REGEXP '^o'
    OR City REGEXP '^u'

조건 2
WHERE 
    REGEXP_LIKE(CITY , '^a|^e|^i|^o|^u');
    
조건 3
WHERE 
    LEFT(city, 1) IN ('a', 'e', 'i', 'o', 'u'):
    
조건 4
WHERE 
    SUBSTR(CITY,1,1) IN ('a', 'e', 'i', 'o', 'u');

조건 1

'^a|e|i|o|u'를 적었는데 오류가 생겨서 각각의 문자열로 시작할 수 있도록 와일드카드를 통해 풀어 적었다. 

 

조건 2

'^a|e|i|o|u'이런 식으로 사용하고 싶다면 각각의 시도에 ^를 사용하여 작성하면 된다.

 

조건 3, 4

첫번째 문자를 추출하고 IN 을 사용하여 해당 문자가 A,E,I,O,U와 일치하는지 확인하는 방법으로도 풀 수 있다. 

 

같은 방식으로 문자열의 끝자리나 첫자리와 끝자리를 특정 문자로 조회할 수 있다.

/*
CITY names have vowels (i.e., a, e, i, o, and u) as both their first and last characters.
not contain duplicates.
*/
SELECT
    DISTINCT City
FROM
    Station
    
<특정 문자로 끝나는 행 추출>
WHERE
    City REGEXP 'a$|e$|i$|o$|u$'
    
<특정 문자로 시작하고 끝나는 행 추출>
WHERE
    LEFT(City, 1) IN ('a', 'e', 'i', 'o', 'u')
    AND RIGHT(City, 1) IN ('a', 'e', 'i', 'o', 'u')
    
<특정 문자를 제외하고 시작하는 행 추출>
WHERE
    City REGEXP '^[^a,e,i,o,u]'

관련글 더보기