대부분 database에서 조회해서 나온 값들 중에서 특정 구분자로 잘라서 처리해야 하는 경우가 있는데,
대부분은 java 등 프로그램 단에서 split 과 같은 것으로 문자열을 잘라서 처리하고 하는데,
sql에서 처리해야만 효율적으로 처리되는 경우가 종종 있는데,
(특히 주소와 같은 경우 시도/시군구/읍면동 으로 구분하고 싶을때..ㅠㅠ)
구분자로 잘라낸 값 중 첫번째나 마지막은 쉬운데 2번째 3번째 이런식으로 가져올때 substring 과 같은 함수만 알고 있는 나로서는 난감한 적이 많았는데, 검색하다 보니 나와서 정리 ^^
SUBSTRING_INDEX
Syntax
SUBSTRING_INDEX(str,delim,count)
Examples
SELECT SUBSTRING_INDEX('www.mariadb.org', '.', 2);
+--------------------------------------------+
| SUBSTRING_INDEX('www.mariadb.org', '.', 2) |
+--------------------------------------------+
| www.mariadb |
+--------------------------------------------+
SELECT SUBSTRING_INDEX('www.mariadb.org', '.', -2);
+---------------------------------------------+
| SUBSTRING_INDEX('www.mariadb.org', '.', -2) |
+---------------------------------------------+
| mariadb.org |
+---------------------------------------------+
이 외에도 나와 같이 주소를 구분하고 싶을 때는 아래 예제 참조.
SELECT SUBSTRING_INDEX('서울시 종로구 청운동', ' ', 1);
+---------------------------------------------+
| 서울시 |
+---------------------------------------------+
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('서울시 종로구 청운동', ' ', 2), ' ', -1);
+---------------------------------------------+
| 종로구 |
+---------------------------------------------+
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('서울시 종로구 청운동', ' ', 3), ' ', -1);
+---------------------------------------------+
| 청운동 |
+---------------------------------------------+
참조URL
https://mariadb.com/kb/en/substring_index/
https://m.blog.naver.com/mankeys/221592881786