테스트 사이트 - 개발 중인 베타 버전입니다

배열로 저장된 db값 검색 채택완료

웹프리죤 5년 전 조회 1,829

예를들어 type1 컬럼에 값이 배열로 들어가기도 하는데요

where type1 like '%{$sch['type1']}%' 식으로 검색문을 짜니까 검색이 안되는데

 

질문은 배열로 저장된 db값을 검색 할때 where type1 like '%{$sch['type1']}%' 를

어떻게 함수를 써야 할까요~?

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
플래토
5년 전

배열로 저장을 하실때

|로 배열값을 문자열로 만들어주신것 같은데요

 

mysql db 입장에서

 

type1의 값들이 배열로 인지하는 | 가 포함된 문자열일지

그냥 문자열일지 알기는 모호합니다.

 

만약 배열을 2개짜리 정형화된 구조라면

 

where  ( type1 like '%{$sch['type1']}%|%'  or type1 like '%|%{$sch['type1']}%' )

 

의 구조로 둘중에 어떤것이든 검색 하는 형태로 가능할것으로 생각됩니다.

 

MySql 함수중에 

INSTR(컬럼 , 검색어) 

라는 함수가 있습니다.

 

검색할때 like 보다 좀더 빠르고 like같이 작동하는 기능입니다.

대신 위의 예와 같이 사용은 어렵고

 

where  instr( type1 , '{$type1}' )

로 사용 가능합니다.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

PHP에서 배열로 처리하겠지만 DB에는 그냥 문자열이라고 보면 되는데 like 검색이 안된다니 이상하네요.

변수없이 직접 단어로 쿼리해보세요. 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

like 가 검색이 안될리가 없습니다. ^^

쿼리를 만드는 코드와 만들어진 쿼리를 올려주시면 금방 답이 나오겠네요 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

v
5년 전

php는 explode, mysql은 SUBSTRING_INDEX로 문자열 나눠서 사용하시면 될 것 같네요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인