MySQL COUNT与WHERE子句无法正常工作

时间:2013-03-26 09:32:45

标签: mysql

我的邮编代码为1-100。

以下查询返回计数1,即使where子句中的id不存在:

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

我认为这是因为“22a”在MySQL幕后成为“22”。也许是因为MySQL会自动转换数据类型或somthing?

以下提供了一个零计数(因此如果char“a”在前面或者在“22”字节之后它会有所不同):

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

我希望此查询与字符串匹配。如果数据类型不正确,则不应删除字符,这会错误地向我提供不需要的答案。在两种情况下,结果都应为零。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

试试这个:

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

它将CAST id的数据类型转换为CHAR,因此它不会将'22a'转换为22。

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

顺便说一句。请注意,由于LIMIT子句设置为1,您将只获得最大结果。

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