2012-04-16 3 views
2

텍스트 필드 내에서 catid 번호에 대해 mysql 검색 (PHP에서)을 시도하고 있습니다. 나는 현재 LIKE를 사용하고 있지만 좀 더 구체적으로 필요합니다. 여기에 내 코드입니다 : mysql이 텍스트 필드에서 catid 검색

SELECT * FROM articlepix 
WHERE published = 1 AND catid LIKE '%86%' 
ORDER BY RAND() LIMIT 1 

이 ^^ 나는 CATID 필드에서 숫자 86을 찾고 있어요,하지만 난 현재 너무 번호 (186)로 데이터를 당기는, 그것은 단지 86보고 싶어요.

위의 예는 catid가 "91,107,36,139,146,168,186"인 필드를 가져옵니다.

% 86 %가 포함 된 모든 것이 아닌 '86'만 검색 할 수 있습니까? 그 말이 맞는다면?

+1

http://stackoverflow.com/questions/2498309/comma-seperated-values-and-like-php-mysql-troubles http://stackoverflow.com/questions/6075418/mysql-like-limiting http : //stackoverflow.com/search?q=[mysql]+like+comma –

+1

"* 86 *만을 찾고 싶습니다." 그렇다면 'catid ='86 '을 사용하면 어떨까요? – Lion

+1

@ 라이온 : 누군가가 정상화를 시도했기 때문입니다. –

답변

4

MySQL은 함수 FIND_IN_SET으로이 거대한 데이터베이스 설계 오류를 해결하는 데 도움을 줄 수 있습니다. 이 시도를 보내기

SELECT * FROM articlepix 
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0 
ORDER BY RAND() LIMIT 1 

으로 간단하게 할 수 물론 어떤 :

WHERE published = 1 AND FIND_IN_SET('86', catid) 

이 일치 없지만, 무엇을 이해하기 어렵게 될 수도 있습니다 때 기능은 0를 반환으로 :)

+1

도와 줘서 고마워. – SoulieBaby

+1

괜찮아! 환영합니다 :) –

관련 문제