SQL을 사용할 때 문자열을 일부만 잘라서 사용해야할 때가 있다.
이럴때 사용할 수 있는 SQL 함수들에 대해 알아보겠다.
문자열을 볼때 INDEX를 알아야 함수들을 사용하기 편한데, 왼쪽에서 부터 1, 2, 3.. 으로 진행된다.
예를 들어 "HELLO WORLD"라는 문자열이 있을때 "E"의 위치는 2이고, 두번째 "O"의 위치는 8이다.
✔ SUBSTRING
SUBSTRING(STRING, START, LENGTH)
STRING을 원하는 시작점에서 원하는 길이만큼 잘라낼 수 있다. START와 LENGTH는 시작점과 길이를 나타낸다.
✔ SUBSTR
SUBSTR(STRING, START, END)
STRING을 원하는 시작점에서 원하는 끝점까지 잘라낸다. START와 END는 시작점과 끝점을 나타낸다.
✔ LEFT
LEFT(STRING, LENGTH)
STRING의 왼쪽부터 원하는 길이만큼 잘라낸다. LENGTH는 길이를 나타낸다.
✔ RIGHT
RIGHT(STRING, LENGTH)
STRING의 오른쪽부터 원하는 길이만큼 잘라낸다. LENGTH는 길이를 나타낸다.
✔ SUBSTRING_INDEX
SUBSTRING_INDEX(STRING, SEPARATOR, COUNT)
STRING을 구분자를 기준으로 분리해서 원하는 만큼 잘라낸다. SEPARATOR는 구분자이고 COUNT는 원하는 만큼의 숫자다.
💡 예시
테이블 명: TEAM
ID | NAME | MEMBER | TEAM_CODE |
1 | RED_A | KIM, LEE, PARK | TR001 |
2 | RED_B | SONG, CHOI | TR002 |
3 | RED_C | JOUNG, CHA | TR003 |
4 | BLUE_A | CHO, AHN, JEON | TB001 |
5 | BLUE_B | DO, SHIM | TB002 |
SQL문 (SUBSTRING, SUBSTR, LEFT)
SELECT SUBSTRING(TEAM_CODE, 1, 2) AS CODE
, COUNT(ID) AS COUNT
FROM TEAM
GROUP BY CODE;
SELECT SUBSTR(TEAM_CODE, 1, 2) AS CODE
, COUNT(ID) AS COUNT
FROM TEAM
GROUP BY CODE;
SELECT LEFT(TEAM_CODE, 2) AS CODE
, COUNT(ID) AS COUNT
FROM TEAM
GROUP BY CODE;
결과
CODE | COUNT |
TR | 3 |
TB | 2 |
SQL문 (RIGHT)
SELECT RIGHT(NAME, 1) AS SUBNAME
, COUNT(ID) AS COUNT
FROM TEAM
GROUB BY SUBNAME;
결과
CODE | COUNT |
A | 2 |
B | 2 |
C | 1 |
SQL문 (SUBSTIRNG_INDEX)
SELECT NAME
, SUBSTRING_INDEX(MEMBER, ',', 1) AS FRIST_MEMBER
FROM TEAM
결과
NAME | FRIST_MEMBER |
RED_A | KIM |
RED_B | SONG |
RED_C | JUNGH |
BLUE_A | CHO |
BLUE_B | DO |
📝 관련 문제
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'MySQL' 카테고리의 다른 글
[MYSQL] 날짜 포맷 (DATE_FORMAT) (0) | 2025.05.21 |
---|---|
[MYSQL] NULL 처리 (IFNULL, CASE, COALESCE) (0) | 2025.05.20 |