我在运行包含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()
的结果为零时,似乎只会失败。
有谁知道可能导致此问题的原因或我如何解决?
答案 0 :(得分:0)
由于产品代码为NULL,SQL Server不会将其计为执行此操作,您需要告诉它:
ISNULL(ProductCode, 0 )
或
ISNULL(ProductCode, '' )