2013-03-26 64 views
2

我使用ID为1-100的Zip代码。MySQL COUNT与WHERE子句无法正常工作

下面的查询返回的计数1,即使在WHERE子句中的ID不存在:

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

我相信这是因为“22A”成为简单的“22”的背后MySQL中的场景。也许是因为MySQL会自动转换数据类型或somthing?

下面提供了一个零计数(因此它是否有差别,如果字符“a”是在前面或behing的诠释“22”):

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

我想这个查询来匹配字符串。如果数据类型不正确,它不应该删除字符,这会错误地给我提供一个不希望的答案。在这两种情况下结果应该是零。

我该怎么办?

回答

1

试试这个:

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

它将CAST数据类型的ID为CHAR,所以不会将 '22A' 至22

0

试试这个

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

有一起去吧。请注意,由于LIMIT子句设置为1,您只能获得最大结果。

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