[SQL] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

iinnuyh_s·2024년 1월 11일
0

SQL

목록 보기
12/17
post-thumbnail
post-custom-banner

자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

풀이

  • 어려운 문제는 아닌데, '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차 이 풀이를 나는 Like 를 사용해서
    LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%' 이렇게 나타냈는데, REGEXP를 활용하면 더 간결하게 나타낼 수 있다고 한다.

    🤟 REGEXP
    정규식을 이용한 검색을 하면 더 다양한 검색을 할 수 있다.

    . : 문자 하나를 나타낸다.
    * : 앞에 나온 문자의 0개 이상 반복을 나타낸다.
    ^ : 문자열의 처음을 나타낸다.
    $ : 문자열의 끝을 나타낸다.
    [.] : 괄호 안의 문자열 일치를 확인한다.
    {.} : 반복을 나타낸다.
    | : or 를 나타낸다.

    위 LIKE 문을 다음과 같이 바꿀 수 있음.

    select * from CAR_RENTAL_COMPANY_CAR
    where OPTIONS REGEXP '통풍시트|열선시트|가죽시트'; 

    이는 OPTIONS 필드에 '통풍시트' 또는 '열선시트', 또는 '가죽시트'를 포함한 레코드를 모두 출력하라.임

  • 어제 본 코테에서 '후기'컬럼의 첫 글자가 영어 알파벳으로 시작하는 경우만 SELECT 해라 라는 문제가 있었는데, 이것도 정규식을 이용하면 쉬울 것 같다.

    💫 컬럼값이 영어로 시작하는 레코드만 추출해라.

    SELECT *
    FROM test
    WHERE name REGEXP '^[A-Za-z]';
    • 여기서 ^ 는 문자의 처음을 나타내고, [A-Za-z]는 문자열이 알파벳 대문자 또는 소문자인 경우를 나타내므로 문자의 처음이 알파벳으로 시작하는 애들만 고르는 정규식인것!

      정규식을 몰랐던 난... 이렇게 써서 냈다.A-Z,a-z 일일이 다 써서 냈음 ㅎㅎ;;
    SELECT *
    FROM test
    WHERE SUBSTR(NAME, 1, 1) IN ('A', 'B', 'C', ...);

    🌟 만약에! 한글로 시작하는 녀석들을 SELECT 하라~ 라고 하면?
    한글은 [가-힇] 으로 나타낸다. 따라서

    SELECT * FROM TEST
    WHERE NAME REGEXP '^[가-힇]';

    이렇게 해주면 되겠찌? 재밌구만

post-custom-banner

0개의 댓글