Определите пустой столбец с помощью Nothing, = Nothing или IsNullOrEmpty
Если вы хотите определить, является ли столбец базы данных пустым (т. Е. Не нулевым, но нет ли в нем значения), каковы различия между приведенными ниже параметрами:
customerRegion varchar(10) NULL
извлекается из базы данных SQL:
If customerRegion = "" Then
If customerRegion = Nothing Then
If String.IsNullOrEmpty(customerRegion) Then
If customerRegion Is Nothing Then
1,2,3 возвращает True 4 возвращает False, когда столбец пуст.
1 и 2 технически одно и то же? и почему 4 возвращается False?
Из 1,2 и 3 какой из них следует использовать, чтобы определить, является ли столбец пустым (или есть ли другой способ сделать это)?
Спасибо
2 ответа
If customerRegion = "" Then
- Этот тест проверяет, содержит ли столбец пустую строку (длина 0). Это "лучший" вариант, потому что значение никогда не будетNothing
, Если значение столбца равно нулю, оно будет равноDBNull
неNothing
,If customerRegion = Nothing Then
- Это очень запутанно, потому что многие люди подумают, что оно взаимозаменяемо с # 4 (Is Nothing
). Когда вы проверяете, равна ли строкаNothing
, VB.NET автоматически считаетNothing
быть пустой строкой. Вот почему он оценивается как Истина.If String.IsNullOrEmpty(customerRegion) Then
- Это будет хорошо работать, но это не нужно, так как значение столбца никогда не будет нулевым (Nothing
) (см. № 1).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