2

我有 ID 为 1-100 的邮政编码。

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

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

我相信这是因为“22a”在 MySQL 的幕后变成了简单的“22”。也许是因为 MySQL 会自动转换数据类型或其他什么?

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

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

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

我能做些什么?

4

3 回答 3

1

尝试这个:

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

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

于 2013-03-26T09:37:49.740 回答
0

试试这个。请注意,由于 LIMIT 子句设置为 1,您将只能得到一个最大结果。

SELECT COUNT(`id`) AS zipCodeCount 
FROM `Zipcode` 
WHERE `id` = "22a" 
LIMIT 1;
于 2013-03-26T10:06:54.687 回答
0

尝试这个

SELECT COUNT(`id`) AS `Zipcode.count` FROM `Zipcode` WHERE `Zipcode`.`id` = 22a LIMIT 1;
于 2013-03-26T09:40:45.637 回答