2013-03-26 4 views
2

ID가 1 - 100 인 우편 번호가 있습니다.WHERE 절에서 MySQL COUNT가 제대로 작동하지 않습니다.

다음 쿼리는 어디에 절에서 ID가 존재하지 않는 경우에도, 하나의 수를 반환

SELECT COUNT(`id`) AS `Zipcode.count` 
FROM `Zipcode` 
WHERE `Zipcode`.`id` = "22a" LIMIT 1; 

난 뒤에 단순히 "22"가되기 때문에 "22A"의 판단 MySQL의 장면. 아마도 MySQL이 데이터 유형을 자동으로 변환하고 있기 때문입니까? 나는이 쿼리 문자열에 일치시킬

SELECT COUNT(`id`) AS `Zipcode.count` 
FROM `Zipcode` 
WHERE `Zipcode`.`id` = "a22" LIMIT 1; 

:

다음은 제로 카운트를 제공합니다 (문자 "는"앞이나 INT "22"behing 경우 그래서 차이가 있습니다) . 데이터 유형이 올바르지 않으면 문자를 제거해서는 안되며, 잘못된 방식으로 잘못된 답변을 제공합니다. 두 경우 모두 결과는 0이어야합니다.

어떻게해야합니까?

답변

1

이 시도 :

SELECT COUNT(`id`) AS `Zipcode.count` 
FROM `Zipcode` 
WHERE CAST(`Zipcode`.`id` AS CHAR) = "22a" 

는 그것은 CHAR 이드의 CAST 데이터 형식, 그래서이

SELECT COUNT(`id`) AS `Zipcode.count` FROM `Zipcode` WHERE `Zipcode`.`id` = 22a LIMIT 1; 
0

에 '22A'를 변환하지 않습니다 것 이걸 가지고가. LIMIT 절이 1로 설정되어 있기 때문에 최대 결과를 얻을 수 있습니다.

SELECT COUNT(`id`) AS zipCodeCount 
FROM `Zipcode` 
WHERE `id` = "22a" 
LIMIT 1; 
0

가지고있는 시도 (22)

관련 문제