Поиск записей SQL, но поле иногда NULL? - PullRequest
0 голосов
/ 02 марта 2010

Я пытаюсь выполнить SQL-запрос, чтобы узнать, существует ли уже адрес в моей базе данных. Мои адреса имеют такую ​​структуру:

line1
line2
line3
city
state
zipcode
country

Иногда line2 и line3 являются значениями NULL в моей базе данных.

Я использую .NET TableAdapter и DataTable, чтобы сделать мой запрос. Когда я пытаюсь передать свой параметр line2 (@ line2), он равен строке со значением = none. Моя база данных не интерпретирует это как NULL и говорит, что записи не совпадают, но я знаю, что они совпадают?

Как передать строку = ничего и сравнить ее со значением NULL в базе данных как равным?

Я попытался использовать string = DBNULL.value, но не скомпилировал. Я провел аналогичные сравнения с целыми числами и т. Д., Используя integer = Nullable (of integer), но для строк это не существует.

Спасибо.

Ответы [ 3 ]

1 голос
/ 02 марта 2010

Вам нужно использовать DBNull.Value

0 голосов
/ 02 марта 2010

Использовать DBNull.Value - это начало, но я не думаю, что оно будет работать, потому что, когда оно выполнит NULL = NULL, оно всегда вернет false.

Если для вас пустая строка совпадает с NULL, вы можете изменить свой запрос на ISNULL (line2, "") как line2 и т. Д. ... и передать "" в качестве параметра, если ваша строка - Nothing.

Если вы не можете этого сделать, вы можете изменить свой запрос, чтобы проверить, имеет ли ваш параметр значение NULL, и если да, то проверить, что строка 2 равна NULL, а не когда это не так.

Надеюсь, это поможет.

0 голосов
/ 02 марта 2010

Ноль является особенным в большинстве запросов. Обычно способ указать совпадающий нуль - это "line2 is NULL"

...