데이터 분석 기술 블로그

Weather Observation Station 6 _ Easy. HackerRank * 본문

SQL/문제풀이

Weather Observation Station 6 _ Easy. HackerRank *

데이터분석가 이채은 2024. 9. 27. 09:00

 

Solution

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%';

 

처음에 이렇게 해서 정답이었다. 하지만 뭐가 최적화할 수 있을 것 같아서 검색해 보았다.

 

Another Solution

SELECT DISTINCT CITY
FROM STATION
WHERE CITY REGEXP '^[AEIOU]';

 

REGEXP은 정규표현식을 사용하여 문자열 패턴을 검색하는 함수다. REGEXP를 사용하면 복잡한 문자열 검색이나 패턴 매칭을 할 수 있고, 단순한 LIKE 연산자보다 훨씬 강력하고 유연한 검색 기능을 제공한다.

SELECT column_name
FROM table_name
WHERE column_name REGEXP 'pattern';

 

  • column_name: 검색할 텍스트가 포함된 열.
  • pattern: 정규 표현식으로 정의한 패턴.

 

 

  1. ^: 문자열의 시작을 나타냅니다.
    • 예: **^A**는 "A"로 시작하는 문자열을 찾습니다.
  2. $: 문자열의 을 나타냅니다.
    • 예: **z$**는 "z"로 끝나는 문자열을 찾습니다.
  3. [abc]: 문자 집합 중 하나에 해당하는 문자를 찾습니다.
    • 예: **[aeiou]**는 모음 중 하나로 시작하는 문자열을 찾습니다.
  4. [a-z]: 특정 문자 범위를 나타냅니다.
    • 예: **[A-Z]**는 모든 대문자로 시작하는 문자열을 찾습니다.
  5. .: 아무 문자 하나와 일치합니다.
    • 예: **a.c**는 "a"로 시작하고, 아무 문자 하나가 있고, "c"로 끝나는 문자열을 찾습니다 (예: abc, axc).
  6. |: OR 조건을 나타냅니다.
    • 예: **cat|dog**는 "cat" 또는 **"dog"**를 찾습니다.
  7. *: 0개 이상의 문자와 일치합니다.
    • 예: **ca*t**는 "ct" 또는 "cat", **"caaat"**과 같은 문자열을 찾습니다.
  8. +: 1개 이상의 문자와 일치합니다.
    • 예: **ca+t**는 "cat", **"caaat"**과 같은 문자열을 찾지만 **"ct"**는 찾지 않습니다.