web-dev-qa-db-ja.com

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

MySQLに三項条件演算子を実装します。 1つのフィールドIDが存在するテーブルがあります。その値はnullの場合があります。 idを次のような三項条件付き形式で表示したい:

select id = id == null ? 0 : id;

MySQLで可能ですか?

75
user1086355

これを試して :

select if(Id is null, 0, id) as Id;
123

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

それは言います:

_IFNULL(expr1,expr2)
_

_expr1_がNULLでない場合、IFNULL()は_expr1_を返します。それ以外の場合は、_expr2_を返します。

そして、多くの例。これは、NULLと比較する三項条件と、第2オペランドとして比較対象を使用するのと同じです。シンボル_?_および_:_を使用してそこに到達することは、実際には何にも関連していないことはありません。

だから、あなたの場合:

_SELECT IFNULL(`id`, 0) FROM `table`
_

3つのオペランドを明示的に提供したい場合(なぜ?!)、IFに切り替えます。

_SELECT IF(`id` IS NULL, 0, `id`) FROM `table`
_

三項演算子と同じロジックを実装できる方法は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)
19
a'r