2013-01-25 3 views
1

나는 가격대에 해당하는 제품을 선택하기 위해 노력하고 있습니다.이 경우에는 160 ~ 200 달러입니다.이 쿼리는 정상적으로 보이지만 가격도 123 달러 인 제품을 포함합니다.간단한 MySQL 쿼리가 잘못된 결과를 반환합니다.

SELECT * FROM product 
WHERE name LIKE '%test%' 
AND price >= '160' AND price <= '200' AND 1=1 
LIMIT 50 

아이디어가 있으십니까?

+3

왜 1 = 1을 사용하고 있습니까? – Arif

+1

숫자를 문자열로 변환하는 이유는 무엇입니까? – GeorgeVremescu

+1

쿼리가 동적으로 작성되기 때문에 1 = 1이 사용되고 있으므로 그렇지 않으면 끝 부분에 항상 'AND'가 있어야합니다. –

답변

2

BETWEEN을 사용하지 않는 이유는 무엇입니까?

SELECT * FROM product 
WHERE name LIKE '%test%' AND 
     price BETWEEN 160 AND 200 
LIMIT 50 
+0

감사합니다. 이것을 잊었습니다. –

+0

'price'의 데이터 유형은 무엇입니까? –

+0

@clickupvoteThe '는 문자열 데이터를위한 것이므로 123을 얻는 이유는 문자열 데이터의 ASCII 비교를하는 것입니다. – xQbert

관련 문제