如果要确定数据库列是否为空(即非空但是没有任何值),以下选项之间有什么区别:
从SQL数据库中检索 customerRegion varchar(10) NULL
:
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中哪一个应该用于确定列是否为空(或者是否有其他方法)?
由于
答案 0 :(得分:1)
If customerRegion = "" Then
- 此测试用于查看列是否包含空(0长度)字符串。这是“最佳”选项,因为该值永远不会是Nothing
。如果列值为null,则它将等于DBNull
,而不是Nothing
。If customerRegion = Nothing Then
- 这非常令人困惑,因为很多人会认为它可与#4(Is Nothing
)互换。当您测试字符串是否等于Nothing
时,VB.NET会自动将Nothing
视为空字符串。这就是它评估为True的原因。If String.IsNullOrEmpty(customerRegion) Then
- 这样做效果很好,但由于列值永远不会为空(Nothing
)(参见#1),因此没有必要。If customerRegion Is Nothing Then
- 这永远不会返回true(见#1)。答案 1 :(得分:1)
True
,则#2将返回Nothing
。来自documentation:对于Visual Basic中的字符串,空字符串等于Nothing。因此,“”=没有什么是真的。
因此,该行为与使用字符串的= Nothing
的VB特定处理有关。
数字4返回False
,因为该字符串为空,但不是Nothing
。
您可以执行另一项检查:IsNullOrWhitespace
。但是如果你需要特别检测零长度的字符串,你应该将它们与String.Empty
进行比较。
像这样:
If customerRegion = String.Empty Then