我有一个简单的查询表:
SELECT * from delivery_receipts WHERE siid='';
该表的唯一键是干键(与该问题无关)。
目标列(
siid
)是一个int(11)
字段,非索引且不唯一...无论如何,我的问题是,当我运行它时,mysql返回所有具有以下内容的行:
SELECT drid,siid from delivery_receipts WHERE siid='0'
但是当然,如果我使用指定的
siid
搜索,则只会显示与siid
匹配的行。因此,似乎我的表格在搜索“”时,在所有具有“ 0”的行上返回匹配项
最佳答案
服务器正在解释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 );