본문 바로가기
SQL

본 캠프 5일차 SQL TIL

by Data 학습자 2024. 6. 28.

오늘 풀어본 문제

https://school.programmers.co.kr/learn/courses/30/lessons/59046

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL문을 작성해주세요.

 

이 문제를 보자마자 바로 LIKE나 SUBSTR을 활용하고 OR를 사용한다면 아주 쉽게 풀이를 할 수 있겠지만 그렇게된다면 쓸데없이 쿼리문이 장황해지고 가독성마저 안좋아질 것 같아 다른 좋은 조건문이 있을 것 같아 찾아보았고 정규표현식이라는 것을 찾아 활용해보기로 하였다.

 

기본적으로 정규표현식이라는 것은 텍스트에서 특정 문자열 패턴을 검색 및 대체 또는 추출하는데 사용되는 텍스트 처리 도구이며 복잡한 문자열 처리 작업을 간결하고 효율적으로 수행하기 위해 사용됩니다.

. 문자 한개 '...' 문자열의 길이가 .의 갯수 이상인 것만 찾음
| (수직선) OR 과 같은 역할 |로 구분된 문자에 해당하는 문자열을 찾음 '오 | 사' 문자열 중 오 또는 사가 해당하는 문자열을 찾음
[] []안에 나열된 패턴에 해당하는 문자열을 찾음 '[QWE]공격' 문자열에서 Q공격, W공격, E공격인 것을 찾음
^ 시작하는 문자열을 찾음 '^인사' 문자열에서 '인사'로 시작하는 문자열을 찾음
$ 끝나는 문자열을 찾음 '끝$' 문자열에서 '끝'으로 끝나는 문자열을 찾음

 

이것 말고도 여러 기능들이 있지만 오늘 풀 문제에선 이정도 수준만 이해해도 좋은 것 같다.

 

정규표현식 REGEXP를 활용한 나의 쿼리문은 다음과 같다

SELECT ANIMAL_ID AS 'ID', NAME AS '이름', SEX_UPON_INTAKE AS '중성화 여부'
FROM ANIMAL_INS
WHERE NAME REGEXP '^Ella|^Lucy|^Pickle|^Rogan|^Sabrina|^Mitty'
ORDER BY ANIMAL_ID

'SQL' 카테고리의 다른 글

본 캠프 7일차 SQL TIL  (0) 2024.06.30
본 캠프 6일차 SQL TIL  (0) 2024.06.29
본 캠프 4일차 SQL TIL  (0) 2024.06.27
본 캠프 3일차 SQL TIL  (0) 2024.06.26
본 캠프 2일차 SQL TIL  (0) 2024.06.25