[TIL] #8. 프로그래머스 String, Date

[ String, Date ]

숫자는 어떻게 쓰는 건지 알겠는데, 글자와 날짜는 어떻게 다루지?


✅ 문자열 관련 함수

1. LENGTH() 함수

전달받은 문자열의 길이를 반환한다.

  • 예제
SELECT LENGTH('12345678');
  • 실행 결과
8

2. CONCAT()

전달받은 문자열을 모두 결합하여 하나의 문자열로 반환한다.
만약 전달받은 문자열 중 하나라도 NULL이 존재하면, NULL을 반환한다.

  • 예제
SELECT CONCAT('ABCD', 'EFG'),
CONCAT('RED', NULL, 'BLACK');
  • 실행 결과
ABCDEFG
NULL

3. LOCATE()

인수로 전달받은 문자열이 특정 문자열에서 처음 나타나는 위치를 찾아서, 해당 위치를 반환한다.
만약 전달받은 문자열이 특정 문자열 내에 존재하지 않으면 0을 반환한다.
MYSQL에서는 문자열의 첫 번쨰 문자의 인덱스는 언제나 1부터 시작한다.

  • 예제
SELECT LOCATE('DEF', 'ABCDEDEF')
  • 실행 결과
6
  • 세 번째 인수로 검색 시작 위치 인덱스를 전달할 수도 있다.
LOCATE('ABC', 'ABCDEFABC', 4);
  • 실행 결과
7

4. REPLACE()

전달받은 문자열에서 특정 문자열을 찾은 후에, 찾은 문자열을 대체 문자열로 교체한다.

  • 예제
SELECT REPLACE('MySQL', 'My', 'MS ')
  • 실행 결과
MS SQL

✅ 날짜와 시간 관련 함수

1. 현재 날짜와 시간 정보

  • NOW() 함수는 현재 날짜와 시간을 반환한다.
    • 'YYYY-MM-DD HH:MM:SS' 또는 YYYYMMDDHHMMSS 형태로 반환된다.
  • CURDATE() 함수는 현재 날짜를 반환한다.
    • 'YYYY-MM-DD' 또는 YYYYMMDD 형태로 반환된다.
  • CURTIME() 함수는 현재 시각을 반환한다.
    • 'HH:MM:SS' 또는 HHMMSS 형태로 반환된다.
  • 예제
SELECT NOW(),
CURDATE(),
CURTIME()
  • 실행 결과
2022-04-02 23:21:36
2022-04-02
23:21:36

2. 특정 날짜와 시간 정보

  • DATE() 함수는 전달받은 값에 해당하는 날짜 정보를 반환한다.
  • MONTH() 함수는 전달받은 값에서 에 해당하는 값만을 반환하며, 0부터 12 사이의 값을 가진다.
  • DAY() 함수는 전달받은 값에서 일자에 해당하는 값만을 반환하며, 0부터 31 사이의 값을 가진다.
  • HOUR() 함수는 전달받은 값에서 시간에 해당하는 값만을 반환하며, 0부터 23 사이의 값을 가진다.
  • MINUTE() 함수는 전달받은 값에서 에 해당하는 값만을 반환하며, 0부터 59 사이의 값을 가진다.
  • SECOND() 함수는 전달받은 값에서 에 해당하는 값만을 반환하며, 0부터 59 사이의 값을 가진다.
  • 예제
SELECT DATE('2022-04-02 23:21:36'),
MONTH('2022-04-02 23:21:36'),
DAY('2022-04-02 23:21:36'),
HOUR('2022-04-02 23:21:36'),
MINUTE('2022-04-02 23:21:36'),
SECOND('2022-04-02 23:21:36')
  • 실행 결과
2022-04-02
4
2
23
21
36

3. 요일과 월 이름

  • MONTHNAME() 함수는 전달받은 값의 에 해당하는 이름을 반환한다.
  • DAYNAME() 함수는 전달받은 값의 요일에 해당하는 이름을 반환한다.
  • 예제
SELECT MONTHNAME('2022-04-02 23:21:36'),
DAYNAME('2022-04-02 23:21:36')
  • 실행 결과
April
Saturday

💡 문제마다 추가적으로 필요한 개념들은 따로 정리해보도록 하겠다!


[ 루시와 엘라 찾기 ]

🔗 문제 바로가기

📌 문제

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

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')

[ 이름에 el이 들어가는 동물 찾기 ]

🔗 문제 바로가기

📌 문제

보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔다. 이 사람이 말하길 할머니가 기르던 개는 이름에 'el'이 들어간다고 한다. 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성하라. 이때 결과는 이름 순으로 조회하라. 단, 이름의 대소문자는 구분하지 않는다.

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE '%EL%'
    AND ANIMAL_TYPE = 'Dog'
ORDER BY NAME
  • LIKE '%EL%'을 이용하여, EL이 들어가는 이름이며, ANIMAL_TYPE'Dog'인 경우를 찾는다.

✅ LIKE

  • WHERE절에서 컬럼에서 지정된 패턴을 검색하는데 사용된다.
  • LIKE 연산자와 함께 자주 사용되는 와일드카드는 아래 두 가지이다.
    • % 기호는 0, 1 또는 여러 문자를 나타낸다.
    • _ 기호는 1개의 단일 문자를 나타낸다.

[ DATETIME에서 DATE로 형 변환 ]

🔗 문제 바로가기

📌 문제

ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회하는 SQL문을 작성하라. 이때 결과는 아이디 순으로 조회해야 한다.

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS '날짜'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
  • DATE_FORMAT을 이용하여 원하는 형식인 년도-월-일으로 출력하도록 만든다.

✅ DATE_FORMAT

  • 지정된 날짜 형식을 지정한다.
  • 형식 지정할 때 사용하는 값들(%Y, %M 등)은 여기 참고하기!

[ 참고자료 ]

http://tcpschool.com/mysql/mysql_builtInFunction_string
http://tcpschool.com/mysql/mysql_builtInFunction_dateTime
https://www.w3schools.com/mysql/mysql_like.asp
https://www.w3schools.com/sql/func_mysql_date_format.asp

좋은 웹페이지 즐겨찾기