Mysql在WHERE子句中返回带有零(0)列数据的行

时间:2012-11-04 12:16:05

标签: mysql field where zero clause

我对我的表有一个简单的查询:

SELECT * from delivery_receipts WHERE siid='';

此表的唯一键是drid,(与此问题无关).. 目标列(siid)是int(11)字段,非索引且非唯一...

无论如何我的问题是,当我运行它时,mysql返回包含以下内容的所有行:

SELECT drid,siid from delivery_receipts WHERE siid='0'

但是,如果我使用指定的siid进行搜索,则只会显示siid匹配的行....

所以看起来我的表在搜索''

时在所有行“0”上返回匹配

1 个答案:

答案 0 :(得分:1)

服务器正在解释Select-Statement,因此需要将数据从char转换为int。由于int的默认值,因此您提供的空char将转换为0。

因此,如果你想获得没有值的所有行(NULL),你必须这样做

SELECT * from delivery_receipts WHERE siid IS NULL;

修改

SELECT * from delivery_receipts WHERE ( siid = '$siid' and '$siid' <> '' ) OR ( '$siid' = '' AND siid IS NULL );
相关问题