예를 들면.. 원본 데이터가
9,158,159,160,161,162,163,164,165,166,167,168,169
인데 맨 앞에 9, 를 제외하고 뒷부분(자식들만) 추출하려고 합니다.
결과는 다음과 같겠죠.
158,159,160,161,162,163,164,165,166,167,168,169
php같은 경우는 비교적 간단합니다.
substring(변수, 2) 이렇게 하면 되는데요.
문제는 원본데이터 부분이 가변적(dynamic)이라는 것!!!
어떻게 가변적인 것들 맨 앞에 코드만 빼고 뒷부분만 추출할 수 있을까요?
맨 앞부분이 한글자일수도 있고 두글자일 수도 있습니다.
좀 복잡해졌습니다.
SUBSTRING_INDEX만 가지고는 많이 좀 복잡해지고
SUBSTRING_INDEX + REPLACE를 같이 사용했습니다.
, GROUP_CONCAT(down_idxs) down_idxs
, GROUP_CONCAT(down_names) down_names , REPLACE(GROUP_CONCAT(down_idxs), CONCAT(SUBSTRING_INDEX(GROUP_CONCAT(down_idxs), ',', 1),','), '') down_idxs2
, REPLACE(GROUP_CONCAT(down_names), CONCAT(SUBSTRING_INDEX(GROUP_CONCAT(down_names), ',', 1),','), '') down_names2
이렇게 해서 잘 되는 줄 알았습니다.
그런데 하다 보니 에러가 났죠.
어떤?
9, 를 replace 하면 뒤에 159, 119, 같은 데 있는 9, 가 함께 다 대체됩니다.
그래서
.................
IGHT 함수를 사용해서 다시 수정했습니다.
, RIGHT( GROUP_CONCAT(down_idxs), LENGTH(GROUP_CONCAT(down_idxs)) - LENGTH(CONCAT(SUBSTRING_INDEX(GROUP_CONCAT(down_idxs), ',', 1),',')) ) down_idxs10
이게 결과가 제대로 나온 것 같아요.
'tech' 카테고리의 다른 글
디비 입력 너무 빠를 때 mysql 조건 (5초 이하인 게 있으면) (0) | 2019.07.18 |
---|---|
디버깅을 위한 파일생성 코드 (0) | 2019.07.16 |
npm upgrade update 업그레이드 업데이트 (0) | 2019.07.15 |
(vscode) 비주얼 스튜디오는 여러줄 주석처리 단축키 Ctr + K + C (0) | 2019.07.15 |
댓가성 라벨을 통한 네이버블로그 통계 수집 (0) | 2019.07.12 |