0

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

SELECT * from delivery_receipts WHERE siid='';

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

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

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

但当然,如果我用siid指定的搜索,只有siid匹配的行出现....

因此,在搜索“”时,我的表似乎在所有具有“0”的行上都返回了一个匹配项

4

1 回答 1

1

服务器正在解释 Select-Statement,因此需要将数据从 char 转换为 int。由于 int 的默认值,您提供的空字符将被转换为 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 );
于 2012-11-04T12:23:59.783 回答