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

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

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

[SQL] REGEXP

sql

[SQL] REGEXP

2022. 12. 24. 19:17

https://indistract.tistory.com/13

 

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

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 hav

indistract.tistory.com

위 게시글에서는 조건에 맞는 문자열을 검색하는 방법을 다뤘다. LEFT(), RIGHT() 함수를 이용할수도 있지만, 정규 표현식을 이용해서도 원하는 형태의 문자열을 출력할 수 있었다. 이번글에서는 정규 표현식에대해 좀더 다뤄보고자 한다.

 

정규 표현식은 영어로 regular expression이라고 표현한다. 이는 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 이를 간략히해서 regexp 라고 지칭하며, 실제로 SQL에서 정규표현식을 쓸때도 WHERE NAME REGEXP의 형태로 질의한다. SQL에서 LIKE문을 사용하는대신 정규표현식을 사용하면 구문을 좀더 간결하게 쓸 수 있는 경우가 많다.

 


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

 

Weather Observation Station 11 | HackerRank

Query a list of CITY names not starting or ending with vowels.

www.hackerrank.com

 

Query the list of CITY names from STATION that either do not start with vowels or do not end with vowels. Your result cannot contain duplicates.

 

지난 문제에서는 모음으로 시작하고, 모음으로 끝나는 도시의 명단을 출력하길 원했다. 이번에는 반대로 모음으로 시작하지 않거나(OR), 모음으로 끝나지 않는 도시를 출력하길 원한다. 이 경우에는 LEFT(), RIGHT() 함수를 사용하기 좋은 경우는 아니다. 모음은 'a, e, i, o, u'로 5개만 존재하지만, 자음은 24개나 존재하기때문에, 이를 모두 나열하면 장황한 쿼리가 될 수 있다.

 

그래서 이렇게 '특정 문자를 포함하지 않는' 경우를 조건으로 문자열을 검색할때는, 정규표현식을 이용하는게 용이하다. 정규 표현식은 여집합을 이용해서 문자열을 검색할 수 있기 때문이다. [^문자] 로 표현식을 작성하면, 괄호 안의 문자를 포함하지 않는 문자열을 찾게 된다. 그를 이용해서 쿼리를 작성하면 아래와 같다.

SELECT DISTINCT city
FROM station
WHERE city REGEXP '^[^aeiou]|[^aeiou]$'

 

'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] 조건에 맞는 문자열 검색  (0) 2022.12.23
    'sql' 카테고리의 다른 글
    • [SQL] NESTED CASE
    • [SQL] COUNT()와 NULL
    • [SQL] 조건에 맞는 숫자 탐색
    • [SQL] 조건에 맞는 문자열 검색
    이동준1
    이동준1

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.