1

電子メール フィールドを含む多数のフィールドを選択する select ステートメントを作成しようとしています。このテーブルには 3 つの電子メール フィールドがあり、NULL 値が含まれることがあります。私は3つの分野を見たいと思っています。[email address1]、[email address2]、[email address3]、そして基本的にやりたいことは、[email address3] が null の場合、[email address2] の値が必要です。email address2 が null の場合、値が必要です。 [メールアドレス1]

構文を正しく理解できていないようで、何が間違っているのかよくわかりません。

4

3 に答える 3

11

必要なのはCOALESCE(...) 関数です:

SELECT COALESCE(t.Email3, t.Email2, t.Email1) FROM MyTable t
于 2009-05-27T14:26:12.427 に答える
5

CASE は必要ありません。COALESCE を使用することもできます(「引数の中で最初の非 null 式を返します」)。

SELECT COALESCE(Email3, Email2, Email1) ...
于 2009-05-27T14:27:39.567 に答える
2

COALESCE に関する他の回答を参照してください。ただし、本当にCASE 構造が必要な場合は、次のようにする必要があります

CASE
  WHEN email3 IS NOT NULL THEN email3
  WHEN email2 IS NOT NULL THEN email2
  WHEN email1 IS NOT NULL THEN email1
  ELSE ''
END

全体から Null が返されないようにするために else 句を追加しましたが、3 つすべてが Null のときにそれが必要な場合は、次のように使用できます。

CASE
  WHEN email3 IS NOT NULL THEN email3
  WHEN email2 IS NOT NULL THEN email2
  ELSE email1
END

SQL Server の CASE 関数は大文字と小文字を区別しないことに注意してください。一度一致すると、それで終わりです。「休憩」はいらない。

于 2009-05-27T14:46:30.340 に答える