1

データベース列が空であるかどうか(つまり、nullではないが値がないかどうか)を判断する場合、以下のオプションの違いは何ですか。

customerRegion varchar(10) NULLSQLデータベースから取得されます。

  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のうち、列が空であるかどうかを判断するために使用する必要があるのはどれですか(または他の方法がありますか)?

ありがとう

4

2 に答える 2

2
  1. If customerRegion = "" Then- これは、列に空 (長さ 0) の文字列が含まれているかどうかをテストします。値が になることはないため、これが「最良の」オプションですNothing。列の値が null の場合、DBNullではなくに等しくなりNothingます。
  2. If customerRegion = Nothing Then- 多くの人が #4 ( ) と互換性があると考えるので、これは非常に紛らわしいですIs Nothing。文字列が と等しいかどうかをテストするとNothing、VB.NET は自動的Nothingに空の文字列であると見なします。そのため、True と評価されます。
  3. If String.IsNullOrEmpty(customerRegion) Then- これはうまく機能しますが、列の値が null ( Nothing) になることはないため不要です (#1 を参照)。
  4. If customerRegion Is Nothing Then- これは true を返しません (#1 を参照)。
于 2012-08-21T16:01:02.770 に答える
1
  • いいえ、それらは同じではありません。True値が実際に である場合、#2 が返されますNothingドキュメントから:

Visual Basic の文字列の場合、空の文字列は Nothing と同じです。したがって、"" = 何も真実ではありません。

そのため、この動作は VB 固有の= Nothingwith 文字列の処理に関係しています。

  • False文字列が空であるため、数値 4 が返されますが、そうではありませんNothing

  • 実行できる別のチェックがありますIsNullOrWhitespace。ただし、特に長さがゼロの文字列を検出する必要がある場合は、それらを と比較する必要がありますString.Empty

このような:

If customerRegion = String.Empty Then
于 2012-08-21T16:02:40.147 に答える