EunsooD

Mysql 특정 문자열 기준을 데이터 나누기 본문

STUDY

Mysql 특정 문자열 기준을 데이터 나누기

EunsooD 2020. 6. 29. 16:24
반응형

MySQL에서 PHP처럼 디테일하지는 않지만

특정 문자열로 문자를 나누는 쿼리를 제공한다.

 

"substring_index"라는 함수인데

특정 문자열 기준으로 앞에서 몇개 뒤에서 몇개 데이터를 출력 할 수 있다.

 

이 함수를 이용하면 "특수문자 기준" 몇번째 데이터를 가져 올 수 있다.

기준 특수문자를 "$"라고 하면

 

 

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('아이폰$갤럭시$샤오미$소니$모토롤라', '$', 2), '$', -1) AS COL;

 

이라고 하면 결과가 "갤럭시"가 나온다.

"SUBSTRING_INDEX" 함수를 두번 이용하는 편법이다.

 

첫번째 SUBSTRING_INDEX 의 결과는 "아이폰$갤럭시" 것이고

두번째 SUBSTRING_INDEX 의 결과가 "갤럭시"인 것이다.

 

위와 같이 편법을 사용 할 때 문제가 되는 것이

"최대값이 정해져 있지 않을때"이다.

 

예를들면

'아이폰$갤럭시$샤오미$소니$모토롤라'

'아이폰$모토롤라'

'아이폰$갤럭시$모토롤라'

'아이폰'

'아이폰$갤럭시$샤오미$소니$모토롤라$노키아'

 

 

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('문자열', '$', 4), '$', -1) AS COL;

문자열 갯수가 모잘라버리면 마지막 값이 반복되는 문제가 있다.

 

그래서 다음과 같이 문자열을 추가해버린다.

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT('문자열', '$$$$$$$$'), '$', 4), '$', -1) AS COL;

 

그러면 넘어가는 값은

그냥 빈값으로 출력된다.

 

 

http://www.gurubee.net/article/66245

 

 

반응형
Comments