计数NULL列时FreeTDS无效的游标状态

时间:2012-12-19 15:15:13

标签: php sql-server freetds unixodbc

我在运行包含NULL值的字段上使用COUNT()函数的查询时遇到问题。

我正在使用FreeTDS v0.91和unixODBC,PHP 5.3.10和SQL Server 2008.我有连接使用7.2协议。我试图运行以下查询:

SELECT COUNT(ProductCode) AS p FROM Membership

当Membership中的每个ProductCode为null时,此查询仅引发错误。当我直接在SQL Server上运行它时,它会评估它应该如何(到0)。

当我尝试从FreeTDS运行此查询时,收到此错误:

  

SQLSTATE [24000]:无效的游标状态:0 [FreeTDS] [SQL Server]无效的游标状态(/builddir/build/BUILD/php-5.3.10/ext/pdo_odbc/odbc_stmt.c中的SQLFetchScroll [0]: 537)

有谁知道为什么我会收到此错误?我记得当我试图一次遍历两个结果集时遇到类似的错误,但这只是一个查询。

ProductCode中存在具有非空值的记录时,此查询正常工作。当COUNT()的结果为零时,似乎只会失败。

有谁知道可能导致此问题的原因或我如何解决?

1 个答案:

答案 0 :(得分:0)

由于产品代码为NULL,SQL Server不会将其计为执行此操作,您需要告诉它:

 ISNULL(ProductCode, 0 )

ISNULL(ProductCode, '' )