Я пытаюсь использовать Npgsql для запроса строк со значением NULL, и с помощью простого запроса он работает, но это ошибка, если я использую подготовленный оператор.Npgsql выдает ошибку, если параметр появляется после IS
Например, этот запрос будет работать:
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 для логического значения, и снова он вел себя так, как ожидалось, используя =, но thre w ошибка в IS. Я что-то делаю неправильно или это ошибка?
Стек след Информация/ошибка:
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.
Только один не имеет смысла? – Steve
= само по себе тоже бессмысленно. = \ @param - нет. IS \ @param тоже нет. –
Я имею в виду. IS NULL - это целое утверждение как «ЛОЖЬ» или «ИСТИНА». Вы не можете разделиться и использовать только часть IS и вставить параметр для завершения инструкции. – Steve