2013-04-29 2 views
1

레코드의 필드에서 키를 검색하는 데 문제가 있습니다.필드에서 키 찾기 (숫자) - Mysql

  • disProdlist = containt 하나 이상의 키, exp (1,2,3,9, .. 등).

"disProdlist"필드에 레코드 포함 키 "9"를 표시하고 싶습니다.

여기 내 쿼리입니다 :

SELECT disProdName FROM discount WHERE FIND_IN_SET('9','disProdlist'); 

, 그것은 어떤 결과를 반환하지 않습니다.

그래서 실험을 시도하고 "disProdlist"를 변경하여 하나의 키만 갖고 성공적으로 결과를 반환하려고합니다. 하지만, "disProdlist"가 하나 이상의 키를 포함하고 싶습니다.

아무도 내 문제를 해결하는 데 도움이 될 수 있습니까?

+0

이 아닌이 작품겠습니까 중 하나를 올바른 형식 또는 형식의 문자열 (VARCHAR, TEXT, ...) 것을 제공 SELECT disProdName FROM discount '여기서'disprodlist 'LIKE'% 9 %;'? Btw, 'LIKE'는 대용량 레코드 세트의 경우 매우 느릴 수 있습니다. –

+0

아니요 '3, 19, 27'과 같은 값을 가진 레코드를 얻지 못합니다. 사용자가 찾고있는 것이 아닙니다. –

+0

'disProdlist'는 문자열입니다. 'disprodlist'는 칼럼입니다. – Strawberry

답변

1

노력이

SELECT disProdName FROM discount WHERE FIND_IN_SET('9','1,2,3,9,..and so on'); 

또는 disProdlist의 disProdList은 필드의 이름 인 경우 열

HERE A DEMO

1

, 당신은에 넣어 안 경우

SELECT disProdName FROM discount WHERE FIND_IN_SET('9',disProdlist); 

작은 따옴표 사이에.

SELECT disProdName FROM discount WHERE FIND_IN_SET('9','disProdlist'); 

이 요청은 잘못되었습니다. 두 번째 인수는 문자열 목록 (doc에 명시된대로 ","문자로 구분 된 하위 문자열로 구성된 문자열)이어야합니다.

올바른 쿼리는 다음과 같습니다

SELECT disProdName FROM discount WHERE FIND_IN_SET('9',disProdlist); 

이 disProdlist가` SET