Давайте представим, что есть таблица Product
со столбцами ProductId
(smallint), Title
(nullable nvarchar (100)) и Price
(money). Название может быть null
.
Существует запрос, который должен возвращать товары, соответствующие определенному названию и определенной цене:
using (SqlCommand getProducts = new SqlCommand("select ProductId from Product where Title = @title and Price = @price", sqlConnection))
{
getProducts.Parameters.AddWithValue("@title", title);
getProducts.Parameters.AddWithValue("@price", price);
}
При выполнении следующего кода с title
, установленным в ноль (или, возможно, также в пустую строку), для SQL Server сравнение будет:
[...] where Title = NULL and Price = 123
, который вернет пустой набор, поскольку правильный синтаксис:
[...] where Title is NULL and Price = 123
Я мог бы изменить строку запроса в соответствии с нулевой проверкой заголовка, но это будет невозможно.
Есть ли чистый способ заставить сравнение работать без изменения строки запроса, когда Title
равен нулю?