2

我正在使用带有 PHP 5.3.27 的 sqlsrv 驱动程序。如何将“is null”作为参数传递给查询。所以与其

SELECT row_id FROM table WHERE name IS NULL

我可以使用

SELECT row_id FROM table WHERE name = ?
4

4 回答 4

1

嗯...是什么阻止您编写 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';
}
于 2013-10-25T07:53:35.647 回答
0

您可以使用 case 语句来解决可空性问题。一个巧妙的技巧是将连接与单行虚拟查询一起使用,以避免必须绑定您的值两次:

SELECT row_id 
FROM   table
JOIN   (SELECT ? AS param) dummy
WHERE  (name IS NULL AND param IS NULL) OR name = param
于 2013-10-25T08:28:20.780 回答
0

您可以通过以下查询检查特定列是否为空或包含某个值。

select row_id 
from table 
where (name IS NULL) or (name IS NOT NULL && name<>'');
于 2013-10-25T07:55:28.863 回答
0

我想用另一种方法自己做

SELECT row_id FROM table WHERE ISNULL(name,-1)=?

如果您确定永远不会使用“-1”作为条件,这将起作用。只需在需要值时使用参数,在需要“IS NULL”时使用“-1”。但我想没有办法将“is null”作为参数传递

于 2013-10-25T10:30:39.070 回答