본문 바로가기

개발이야기

[mysql/mariadb] SUBSTRING_INDEX - 문자열자르기

대부분 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/

 

SUBSTRING_INDEX

Returns the substring from string before count occurrences of a delimiter.

mariadb.com

 

https://m.blog.naver.com/mankeys/221592881786

 

[MariaDB] java의 split()에 대응하는 함수 SUBSTRING_INDEX()

참조: https://gocoder.tistory.com/189 MySQL - SUBSTRING_INDEX() / 문자...

blog.naver.com