MYSQL | Mysql 에서 php explode() 함수와 같은 효과 | |||||
---|---|---|---|---|---|
작성자 | 작성일 | 18-03-08 15:19 | |||
가끔 데이터를 넣을때, 가져올때의 상황이 서로 맞지 않아 낭패를 보는 경우가 있다. 한테이블에 두종류의 이상의 코드를 각각 다른 컬럼에 넣지 않고, reference_code 라는 컬럼에 "13,9,30" 이런식으로 콤마로 구분해서 한꺼번에 집어넣은적이 있다. 물론 저렇게 입력된 데이터는 불러올때도 한꺼번에 불러와서 php 의 explode() 함수로 나누어 배열에 저장할 수 있지만, 어쩌다보니 쿼리로 처음 불러올때부터 그 레코드의 reference_code 값이 "13,9,30" 라면 그중 콤마로 나누어 맨 앞의 인자가 "13" 인 레코드만 불러와야 하는 상황에 처했다. 이런 난감한 경우를 어떻게 넘겨야 하는가.... Mysql 에서 query 만으로는 php 의 explode() 함수와 같은 효과를 낼수 있는 방법은 없지만, 거의 같은 효과를 볼수있는 꽁수가 있다. Mysql 내장함수인 SubString_Index() 를 사용하는 방법이다. php의 explode() 와 성격은 다른 함수이지만 사용하기에 따라서 비슷한 효과를 볼수 있다. SELECT SubString_Index(reference_code , ',' , 1) as code_a, SubString_Index(SubString_Index(reference_code, ',' , -2), ',' , 1) as code_b, SubString_Index(reference_code , ',' , -1) as code_b From 테이블이름 WHERE SubString_Index(reference_code , ',' , 1) = '13'; 이렇게 쿼리를 날리면 code_a | code_b | code_c ---------------------------------------------- 13 | 9 | 30 이렇게 결과값을 얻어낼 수 있다 +_+ 한가지 아쉬운점은 컬럼안의 데이터가 "13,9,30," 처럼 맨뒤에 콤마가 붙으면 안먹힌다는 것이다 ㅠㅠ
|
|||||
|
댓글목록
등록된 댓글이 없습니다.