我的邮编代码为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;
我希望此查询与字符串匹配。如果数据类型不正确,则不应删除字符,这会错误地向我提供不需要的答案。在两种情况下,结果都应为零。
我该怎么办?
答案 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;