MySQLで三項条件演算子を実装する方法


回答:



53

ドキュメントはあなたの友達です。あなたはそれを読むべきです!

それは言う:

IFNULL(expr1,expr2)

そうexpr1でない場合はNULL、;をIFNULL()返しますexpr1。それ以外の場合はを返します expr2

そして、たくさんの例。これはNULL、比較対象を第2オペランドとして、比較対象を含む3項条件を使用するのと同じです。シンボルを使用することは起こらないということ?と、:何に本当に関連がないあなたを取得します。

だから、あなたの場合:

SELECT IFNULL(`id`, 0) FROM `table`

3つのオペランドを明示的に提供する必要がある場合(なぜ?!)、次のように切り替えIFます。

SELECT IF(`id` IS NULL, 0, `id`) FROM `table`

4
+1、ただし質問に答えるには:CASE WHEN id IS NULL THEN 0 ELSE id END
MichaelKrelin-ハッカー2011年

@ MichaelKrelin-ハッカー:同じことですよね?そしてIFNULL、より簡潔です。
軌道上でのライトネスレース2011

@ MichaelKrelin-ハッカー:ああ、わかりました。
軌道上でのライトネスレース2011

確かに、三項についての質問に答えるためだけに:)
MichaelKrelin-ハッカー2011年

私の場合、私が使用する必要があるIFのではなく、IFNULLまたはCOALESCE私は別のベンダーのデータベースにデータを移行していますのでと、null以外の値をインポートするだけで、一般的な状況として、それを解釈する必要はありません。SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_status私のために働きます。
Adam Elsodaney 2015年

22

三項演算子と同じロジックを実装するには、次の2つの方法があります。

  1. IF関数を使用します。IF(expression, true result, false result)
  2. 次のCASE式を使用します。

    CASE WHEN expression THEN <true result> ELSE <false_result> END
    

NULLをチェックするときは、IFNULLまたはCOALESCE関数を使用できます。

IFNULL(ID, 0)
COALESCE(ID, 0)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.