Search

IFNULL(a, b)
IFNULL()

unknown

IFNULL(a, b)

aNULLでない場合はaを返し、それ以外の場合はbを返します。
IFNULL()関数は、使用されているコンテキストに応じて、数値または文字列を返します。

mysql> SELECT IFNULL(1, 0); Enter
+--------------+
| IFNULL(1, 0) |
+--------------+
|            1 |
+--------------+
1 row in set (0.05 sec)

mysql> SELECT IFNULL(NULL, 10); Enter
+------------------+
| IFNULL(NULL, 10) |
+------------------+
| 10               |
+------------------+
1 row in set (0.58 sec)

mysql> SELECT IFNULL(1/0, 10); Enter
+-----------------+
| IFNULL(1/0, 10) |
+-----------------+
|              10 |
+-----------------+
1 row in set (0.06 sec)

mysql> SELECT IFNULL(1/0, 'YES'); Enter
+--------------------+
| IFNULL(1/0, 'YES') |
+--------------------+
| YES                |
+--------------------+
1 row in set (0.00 sec)

ヌル判定
COALESCE()

unknown

COALESCE(a, b, c)

coalesce()関数は、最初のNULLでないデータを返します。

mysql> SELECT COALESCE(NULL, 'YES', 'NO'); Enter
+---------------------------+
| coalesce(null,'YES','NO') |
+---------------------------+
| YES                       |
+---------------------------+
1 row in set (0.00 sec)

ヌル比較
NULLIF()

unknown

NULLIF(a, b)

NULLIF()関数は、等しければNULLを返し、等しくなければaが返ります。

a = bTRUEの場合はNULLを返し、それ以外の場合はaを返します。
これはCASE WHEN x = y THEN NULL ELSE x ENDと同じです。

mysql> SELECT NULLIF(1, 1); Enter
+--------------+
| NULLIF(1, 1) |
+--------------+
|         NULL |
+--------------+
1 row in set (0.00 sec)

mysql> SELECT NULLIF(1, 2); Enter
+--------------+
| NULLIF(1, 2) |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

IF(a, b, c)
IF()

unknown

IF(a, b, c)

aTRUE(a<>0 および a<>NULL)の場合、 IF() はbを返し、それ以外の場合はcを返します。 IF()関数は、使用されているコンテキストに応じて、数値または文字列を返します。

mysql> SELECT IF(1>2, 2, 3); Enter
+---------------+
| IF(1>2, 2, 3) |
+---------------+
|             3 |
+---------------+
1 row in set (0.07 sec)

mysql> SELECT IF(1<2, 'YES', 'NO'); Enter
+----------------------+
| IF(1<2, 'YES', 'NO') |
+----------------------+
| YES                  |
+----------------------+
1 row in set (0.00 sec)

mysql> SELECT IF(STRCMP('test', 'test1'), 'NO', 'YES'); Enter
+------------------------------------------+
| IF(STRCMP('test', 'test1'), 'NO', 'YES') |
+------------------------------------------+
| NO                                       |
+------------------------------------------+
1 row in set (0.67 sec)

多重判定
CASE

unknown

CASE 値 WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...][ELSE result] END , CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...][ELSE result] END

最初の式では、value=compare-valueであるresult値を返します。
2番目の式では、最初の条件がTRUEなら、そのresult値を返します。
一致する結果が検出されない場合は、ELSE後のresult値を返します。
ELSE部分がない場合は、NULLを返します。

戻り値の型(INTEGER、DOUBLE、またはSTRING)は最初の戻り値(最初のTHEN後の式)の型と同じ。

# tbl_Customerテーブルの内容
mysql> SELECT * FROM tbl_Customer; Enter
+--------+-----------+----------+------+------+
| UserID | FirstName | LastName | Sex  | Age  |
+--------+-----------+----------+------+------+
| U001   | 花子      | 鈴木     | f    |   21 |
| U002   | 太郎      | 田中     | m    |   30 |
| U003   | 一郎      | 鈴木     | m    |   45 |
| U004   | 萌子      | 山口     | f    |   18 |
| U005   | 愛        | 森永     | f    |   21 |
| U006   | 太郎      | 鈴木     | m    |   22 |
| U007   | 花子      | 佐藤     | f    |   35 |
+--------+-----------+----------+------+------+
7 rows in set (0.01 sec)

mysql> SELECT Age, Enter
    -> CASE Enter
    -> WHEN Age>=10 AND Age<=19 THEN '10代' Enter
    -> WHEN Age>=20 AND Age<=29 THEN '20代' Enter
    -> WHEN AGE>=30 AND Age<=39 THEN '30代' Enter
    -> ELSE 'その他' Enter
    -> END 'Generation' Enter
    -> FROM tbl_Customer; Enter
+------+------------+
| Age  | Generation |
+------+------------+
|   21 | 20代       |
|   30 | 30代       |
|   45 | その他     |
|   18 | 10代       |
|   21 | 20代       |
|   22 | 20代       |
|   35 | 30代       |
+------+------------+
7 rows in set (0.00 sec)

このページで使用しているサンプルデータ

unknown

サンプルデータ
# テーブル(tbl_Customer)作成
CREATE TABLE tbl_Customer(
UserID VARCHAR(4) NOT NULL PRIMARY KEY,
FirstName VARCHAR(32) NOT NULL,
LastName VARCHAR(32) NOT NULL,
Sex CHAR(2) DEFAULT NULL,
Age INTEGER DEFAULT NULL
);

# データ挿入
INSERT INTO tbl_Customer (UserID,FirstName,LastName,Sex,Age) VALUES
('U001','花子','鈴木','f',21),
('U002','太郎','田中','m',30),
('U003','一郎','鈴木','m',45),
('U004','萌子','山口','f',18),
('U005','愛','森永','f',21),
('U006','太郎','鈴木','m',22),
('U007','花子','佐藤','f',35);

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop

polarized women