我对我的表有一个简单的查询:
SELECT * from delivery_receipts WHERE siid='';
此表的唯一键是drid,(与此问题无关)..
目标列(siid
)是int(11)
字段,非索引且非唯一...
无论如何我的问题是,当我运行它时,mysql返回包含以下内容的所有行:
SELECT drid,siid from delivery_receipts WHERE siid='0'
但是,如果我使用指定的siid
进行搜索,则只会显示siid
匹配的行....
所以看起来我的表在搜索''
时在所有行“0”上返回匹配答案 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 );