我正在使用带有 PHP 5.3.27 的 sqlsrv 驱动程序。如何将“is null”作为参数传递给查询。所以与其
SELECT row_id FROM table WHERE name IS NULL
我可以使用
SELECT row_id FROM table WHERE name = ?
嗯...是什么阻止您编写 if/else 子句?
if($i_need_a_value) {
$query = 'SELECT row_id FROM table WHERE name = ?';
} else {
$query = 'SELECT row_id FROM table WHERE name IS NULL';
}
您可以使用 case 语句来解决可空性问题。一个巧妙的技巧是将连接与单行虚拟查询一起使用,以避免必须绑定您的值两次:
SELECT row_id
FROM table
JOIN (SELECT ? AS param) dummy
WHERE (name IS NULL AND param IS NULL) OR name = param
您可以通过以下查询检查特定列是否为空或包含某个值。
select row_id
from table
where (name IS NULL) or (name IS NOT NULL && name<>'');
我想用另一种方法自己做
SELECT row_id FROM table WHERE ISNULL(name,-1)=?
如果您确定永远不会使用“-1”作为条件,这将起作用。只需在需要值时使用参数,在需要“IS NULL”时使用“-1”。但我想没有办法将“is null”作为参数传递