Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果参数位于IS之后,Npgsql将抛出错误_C#_Postgresql_Npgsql - Fatal编程技术网

C# 如果参数位于IS之后,Npgsql将抛出错误

C# 如果参数位于IS之后,Npgsql将抛出错误,c#,postgresql,npgsql,C#,Postgresql,Npgsql,我试图使用Npgsql来查询具有空值的行,并且使用一个简单的查询它可以工作,但是如果我使用一个准备好的语句,它会出错 例如,此查询可以工作: SELECT * FROM table WHERE column IS NULL LIMIT 10; 但这个不会: // @null is a parameter with a null value (DBNull.Value) SELECT * FROM table WHERE column IS @null LIMIT 10; 此查询将返回一个空结

我试图使用Npgsql来查询具有空值的行,并且使用一个简单的查询它可以工作,但是如果我使用一个准备好的语句,它会出错

例如,此查询可以工作:

SELECT * FROM table WHERE column IS NULL LIMIT 10;
但这个不会:

// @null is a parameter with a null value (DBNull.Value)
SELECT * FROM table WHERE column IS @null LIMIT 10;
此查询将返回一个空结果集,但不会返回预期的错误:

// @null is a parameter with a null value (DBNull.Value)
SELECT * FROM table WHERE column = @null LIMIT 10;
我还尝试对布尔值使用IS,它的行为与预期的一样,使用=,但在IS上抛出了一个错误。我是做错了什么还是这是一个bug

堆栈跟踪/错误信息:

Npgsql.PostgresException -- External component has thrown an exception.
at Npgsql.NpgsqlConnector.DoReadSingleMessage(DataRowLoadingMode dataRowLoadingMode, Boolean returnNullForAsyncMessage, Boolean isPrependedMessage)
at Npgsql.NpgsqlConnector.ReadSingleMessage(DataRowLoadingMode dataRowLoadingMode, Boolean returnNullForAsyncMessage)
at Npgsql.NpgsqlCommand.Prepare()

所有测试最初都是使用3.0.4版和3.1.9版运行的。

正如注释中提到的
IS
IS NOT
不是可以单独使用的术语。它们是更大声明的一部分:
是空的
不是空的
,不能分开。

正如注释中提到的
不是
不是可以单独使用的术语。它们是更大语句的一部分:
为空
不为空
,不能分开。

单独存在没有意义吗?=单独存在也没有意义\@param不是。IS\@param也不是。我是说。IS NULL是一个完整的语句,表示为FALSE或TRUE。你不能拆开,只使用IS部分并粘贴一个参数来完成语句。哦,我明白了。那么本质上为空的参数值是没有价值的?我想除了插入和函数参数@SteveNULL参数值绝对不是一文不值的-例如,在插入值(有时为null,有时不为null)时可以使用它们。但是,如上所述,IS NULL是一个不能分解的表达式-参数不是文本搜索和替换。IS独自一人没有意义吗?=独自一人也没有意义\@param不是。IS\@param也不是。我是说。IS NULL是一个完整的语句,表示为FALSE或TRUE。你不能拆开,只使用IS部分并粘贴一个参数来完成语句。哦,我明白了。那么本质上为空的参数值是没有价值的?我想除了插入和函数参数@SteveNULL参数值绝对不是一文不值的-例如,在插入值(有时为null,有时不为null)时可以使用它们。然而,如上所述,IS NULL是一个不能分解的表达式-参数不是文本搜索和替换。