次のようにselectを条件付きにしたいselectステートメントがあります。
IFNULL(field_a, field_a, field_b)
フィールドaをチェックするようにします。aがnullの場合、選択はフィールドbになります。
それは可能ですか?
COALESCEを使用する:
SELECT COALESCE(field_a, field_b)
COALESCEは、指定された列のリストから最初のnull以外の値を返し、列を左から右に処理するANSI標準関数です。したがって、この例では、field_a
がnullの場合、field_b
値が表示されます。ただし、指定された列にnull以外の値がない場合、この関数はNULLを返します。
MySQL(4.1で使用)、SQL Server(v2000以降)、Oracle 9i+...でサポートされています。
そしてその猫の皮を剥ぐ別の方法(ヌル比較だけでなく柔軟)...
select if(field_a is not null, field_a, field_b) from...
はい、しかしそれはたった2つのパラメータです:
IFNULL(field_a,field_b)
nullでない場合field_a
は、返されます。それ以外の場合field_b
は返されます。
参照:IFNULL
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 |
+------------+-----------+----------+-----------