이동준1
아웃풋 공부
이동준1
전체 방문자
오늘
어제
  • 분류 전체보기 (87)
    • airflow (8)
    • sql (23)
    • aws (12)
    • python (3)
    • 네트워크 (12)
    • 알고리즘 (2)
    • 짧은서평 (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 고통의 비밀
  • regexp
  • 유연함의힘
  • 마음의기술 서평
  • 고통의비밀
  • AWS
  • 서평
  • 통증해방 서평
  • 퓨처셀프
  • Network
  • 네트워크
  • 통증해방
  • 마음의기술

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
이동준1

아웃풋 공부

sql

[SQL] 조건에 맞는 문자열 검색

2022. 12. 23. 17:24

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

 

Weather Observation Station 8 | HackerRank

Query CITY names that start AND end with vowels.

www.hackerrank.com

 

Query the list of CITY names from STATION which have vowels (i.e., a, e, i, o, and u) as both their first and last characters. Your result cannot contain duplicates.

 

 

먼저, 문제에서는 모음으로 시작하고, 모음으로 끝나는 CITY의 이름을 출력하길 원한다. SQL의 LEFT()함수와 RIGHT()함수를 이용하면 문자열 양 끝단에 조건을 걸 수 있다. CITY의 가장 왼쪽 단어가 모음에 속하는 동시에(AND) 가장 오른쪽 단어가 모음에 속하는 경우를 조건으로 걸어주면 원하는 도시의 목록을 나열할 수 있다. 그리고 결과는 중복값을 원하지 않으므로, DISTINCT를 이용해 처리해준다.

 

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')

 


이 방법외에도 정규식을 이용해, 원하는 자료를 검색할수 있다. 조건이 다소 복잡한 경우라면, 정규표현식을 사용하는것이 더 간결한 형태가 될 수 있다.

SELECT DISTINCT CITY 
FROM STATION
WHERE CITY REGEXP '^[aeiou].*[aeiou]$';

 

정규 표현식은 WHERE NAME REGEXP의 형태로 사용한다. 쿼리를 설명하자면 다음과 같다.

 

  1) '^[]' 를 이용하면, 대괄호 안에 있는 문자열로 시작하는 CITY를 찾는다.

  2) .*는 시작된 문자 이후 어떤 문자의 반복을 나타낸다.

    (시작과 끝 사이에 알파벳이 있어도 되고, 없어도 된다)

  3) '[]$' 는 대괄호안에 포함된 문자열로 끝나는 CITY를 찾는다.

 

이렇게 '^[].*[]$' 를 이용하면 특정 문자로 시작하고 끝나는 도시를 찾아낼 수 있다.

'sql' 카테고리의 다른 글

[SQL] ROW_NUMBER / RANK / DENSE_RANK  (0) 2022.12.27
[SQL] NESTED CASE  (0) 2022.12.26
[SQL] COUNT()와 NULL  (0) 2022.12.24
[SQL] 조건에 맞는 숫자 탐색  (0) 2022.12.24
[SQL] REGEXP  (0) 2022.12.24
    'sql' 카테고리의 다른 글
    • [SQL] NESTED CASE
    • [SQL] COUNT()와 NULL
    • [SQL] 조건에 맞는 숫자 탐색
    • [SQL] REGEXP
    이동준1
    이동준1

    티스토리툴바