2011-12-14 13 views
48

MySQLに三項条件演算子を実装したいと思います。私は1つのフィールドIDが存在するテーブルを持っています。その値はnullでもかまいません。私はこのような三条件付書式でidを表示したい:MySQLで三項条件演算子を実装する方法

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

は、MySQLで、それは可能ですか?

+0

可能重複http://stackoverflow.com/questions/1647961/how-do-you-write-a-conditional-in- a-mysql-select-statement) –

答えて

94

はこれを試してみてください。

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

The documentationはあなたの友人です。あなたはそれを読むべきです!

それは言う:

IFNULL(expr1,expr2) 

expr1は、IFNULL()戻りexpr1NULLされていない場合。それ以外の場合は expr2を返します。

そして多くの例。これは、第2オペランドとして比較対象をNULLと比較した3値条件を使用することと同等です。 ?:のシンボルを使用して実際には何の関係もないことはありません。

だから、あなたのケースでは:あなたが明示的に(なぜ?)3つのオペランドを提供するために必死なら

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

は、その後、IFに切り替える:

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

+1ですが、質問に答えるには: 'IDがNULLの場合は0 ELSE id END' –

+0

@ MichaelKrelin-hacker:同じこと、いいえ?そして、「IFNULL」は軽いです。 –

+0

@ MichaelKrelin-hacker:ああ、私はそれを手に入れます。 –

14

三項演算子と同じロジックを実装できる方法は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) 
[あなたはMySQLのSELECT文での条件付き書くにはどうすればよい?](の