web-dev-qa-db-ja.com

mysql IFNULL ELSE

私はこのような選択条件付きにするselect文を持っています

IFNULL(field_a,field_a,feild_b)

aがnullの場合、フィールドaをチェックし、選択はフィールドbになります

それは可能ですか?

44
mcgrailm

[〜#〜] coalesce [〜#〜] を使用します。

SELECT COALESCE(field_a, field_b)

COALESCEは、指定された列のリストから最初の非NULL値を返し、列を左から右に処理するANSI標準関数です。したがって、例では、field_a 無効です、 field_b値が表示されます。ただし、指定された列にnull以外の値がない場合、この関数はNULLを返します。

MySQL(4.1で使用しました)、SQL Server(v2000以降)、Oracle 9i +でサポートされています...

88
OMG Ponies

そしてその猫の皮を剥ぐ別の方法(null比較だけでなく柔軟)...

select if(field_a is not null, field_a, field_b) from...
50
user3590489

はい、しかしそれはたった2つのパラメーターです:

IFNULL(field_a,field_b)

field_aはnullではなく、返されます。さもないと field_bが返されます。

参照: [〜#〜] ifnull [〜#〜]

38
Matt

その他の例

MySQL IFNULL()の構文と例

構文

IFNULL関数の構文は次のとおりです。

IFNULL(expression_1,expression_2);

   SELECT 
     name, IFNULL(businessphone, homephone) phone
 FROM
     users;



       #The above query return this result from users table

   +------------+-----------+----------+-----------
   | id        | name           | phone          |
   +------------+-----------+----------+-----------
   | 5         | Tommy Hill     | (541) 754-3009 |
   | 6         | John Smith     | (541) 754-3110 | 
   | 10        | Mark Greenspan | (541) 754-3111 | 
   | 11        | Kelvin Row     | (541) 754-3111 |
   +------------+-----------+----------+-----------
0
Developer