[프로그래머스 Lv.2] SELECT - 3월에 태어난 여성 회원 목록 출력하기

김민지·2024년 5월 9일
0

✨ 정답 ✨

-- 코드를 입력하세요
SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE (substring(DATE_OF_BIRTH, 6, 2)='03'
# WHERE (SUBSTRING_INDEX(SUBSTRING_INDEX(DATE_OF_BIRTH, '-', 2),'-',-1)='03'
AND GENDER='W'       
AND TLNO IS NOT NULL)
ORDER BY MEMBER_ID;

🧵 참고한 정답지 🧵

💡💡 해설 💡💡

내 코드 설명
역시 난 mySQL이 재밌다.
DATE_OF_BIRTH라는 DATE 타입 컬럼값들을 자르는 방법은 다음과 같다.
1. substring(문자열, 시작인덱스, 자르고자 하는 문자열 개수)
WHERE (substring(DATE_OF_BIRTH, 6, 2)='03'

  1. SUBSTRING_INDEX(문자열, 구분자, 구분자로 기준 몇 번째 도막까지 잘라낼 것인지를 나타내는 인덱스)
    WHERE (SUBSTRING_INDEX(SUBSTRING_INDEX(DATE_OF_BIRTH, '-', 2),'-',-1)='03'
    여기서 조심해야 할 것은 mySQL에서는 인덱스가 1부터 시작한다는 것이다.
    또, 다른 언어와 달리 구분자로 잘라낸다고 해서 ("a-b-c").split("-") --> ['a', 'b', 'c'] ---> ("a-b-c").split("-")[1]==="b" 이렇게 되는 것이 아니다. mySQL에는 배열이라는 데이터 타입이 없어서 그런 것이 아닐까 싶다.
    여튼 "a-b-c"에서 "b"만 잘라내고 싶다면 SUBSTRING_INDEX를 중첩해서 사용해야 한다.
    SUBSTRING_INDEX(SUBSTRING_INDEX("a-b-c", '-',2), '-', -1) 이렇게.
profile
이건 대체 어떻게 만든 거지?

0개의 댓글

관련 채용 정보