배열로 저장된 db값 검색
본문
예를들어 type1 컬럼에 값이 배열로 들어가기도 하는데요
where type1 like '%{$sch['type1']}%' 식으로 검색문을 짜니까 검색이 안되는데
질문은 배열로 저장된 db값을 검색 할때 where type1 like '%{$sch['type1']}%' 를
어떻게 함수를 써야 할까요~?
답변 4
배열로 저장을 하실때
|로 배열값을 문자열로 만들어주신것 같은데요
mysql db 입장에서
type1의 값들이 배열로 인지하는 | 가 포함된 문자열일지
그냥 문자열일지 알기는 모호합니다.
만약 배열을 2개짜리 정형화된 구조라면
where ( type1 like '%{$sch['type1']}%|%' or type1 like '%|%{$sch['type1']}%' )
의 구조로 둘중에 어떤것이든 검색 하는 형태로 가능할것으로 생각됩니다.
MySql 함수중에
INSTR(컬럼 , 검색어)
라는 함수가 있습니다.
검색할때 like 보다 좀더 빠르고 like같이 작동하는 기능입니다.
대신 위의 예와 같이 사용은 어렵고
where instr( type1 , '{$type1}' )
로 사용 가능합니다.
php는 explode, mysql은 SUBSTRING_INDEX로 문자열 나눠서 사용하시면 될 것 같네요
like 가 검색이 안될리가 없습니다. ^^
쿼리를 만드는 코드와 만들어진 쿼리를 올려주시면 금방 답이 나오겠네요
PHP에서 배열로 처리하겠지만 DB에는 그냥 문자열이라고 보면 되는데 like 검색이 안된다니 이상하네요.
변수없이 직접 단어로 쿼리해보세요.