Определите пустой столбец с помощью Nothing, = Nothing или IsNullOrEmpty

Если вы хотите определить, является ли столбец базы данных пустым (т. Е. Не нулевым, но нет ли в нем значения), каковы различия между приведенными ниже параметрами:

customerRegion varchar(10) NULL извлекается из базы данных SQL:

  1. If customerRegion = "" Then
  2. If customerRegion = Nothing Then
  3. If String.IsNullOrEmpty(customerRegion) Then
  4. If customerRegion Is Nothing Then

1,2,3 возвращает True 4 возвращает False, когда столбец пуст.

1 и 2 технически одно и то же? и почему 4 возвращается False?

Из 1,2 и 3 какой из них следует использовать, чтобы определить, является ли столбец пустым (или есть ли другой способ сделать это)?

Спасибо

2 ответа

Решение
  1. If customerRegion = "" Then - Этот тест проверяет, содержит ли столбец пустую строку (длина 0). Это "лучший" вариант, потому что значение никогда не будет Nothing, Если значение столбца равно нулю, оно будет равно DBNullне Nothing,
  2. If customerRegion = Nothing Then - Это очень запутанно, потому что многие люди подумают, что оно взаимозаменяемо с # 4 (Is Nothing). Когда вы проверяете, равна ли строка Nothing, VB.NET автоматически считает Nothing быть пустой строкой. Вот почему он оценивается как Истина.
  3. If String.IsNullOrEmpty(customerRegion) Then - Это будет хорошо работать, но это не нужно, так как значение столбца никогда не будет нулевым (Nothing) (см. № 1).
  4. If customerRegion Is Nothing Then - Это никогда не вернет истину (см. #1).
  • Нет, они не одинаковы. #2 вернется True если значение на самом деле Nothing, Из документации:

Для строк в Visual Basic пустая строка равна Nothing. Поэтому "" = Ничто не является правдой.

Таким образом, поведение связано с VB-специфической обработкой = Nothing со строками.

  • Номер 4 возвращается False потому что строка пуста, но это не Nothing,

  • Есть еще одна проверка, которую вы можете сделать: IsNullOrWhitespace, Но если вам нужно специально определить строки нулевой длины, вы должны сравнить их с String.Empty,

Как это:

If customerRegion = String.Empty Then
Другие вопросы по тегам