채택완료

배열로 저장된 db값 검색

2020-03-31 (화) 02:35:37 2,041

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

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

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

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

662111144_1585589629.149.png

|

답변 4개

채택된 답변
+20 포인트

배열로 저장을 하실때

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

mysql db 입장에서

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

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

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

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

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

MySql 함수중에 

INSTR(컬럼 , 검색어) 

라는 함수가 있습니다.

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

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

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

로 사용 가능합니다.

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

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

2020-03-31 (화) 09:16:24

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

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

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

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