MySQLでは、ISNULL()
関数を使用すると、値がnull
であるかどうかを確認できます か否か。 null
の場合 、次に1
が返されます。それ以外の場合は0
返されます。
構文
ISNULL(expr)
例
簡単な例を次に示します。
SELECT ISNULL( null );
結果:
1
この場合、式はnull
です。 したがって、出力は1
です。 。
ここでは、null
以外のものを使用しています 値:
SELECT ISNULL( 'Cake' );
結果:
0
今回の結果は0
です。 (式がnull
ではないため 。
表現
ISNULL()
式の結果をチェックします。たとえば、次のようにすると、次のようになります。
SELECT ISNULL( 3 / 0 );
これを取得します:
1
したがって、null
を指定しませんでしたが 引数として、式の結果はnull
です。 、などISNULL()
1
を返します 。
これは、次の例でより明確に示すことができます:
SELECT
3 / 0,
ISNULL( 3 / 0 );
結果:
+-------+-----------------+ | 3 / 0 | ISNULL( 3 / 0 ) | +-------+-----------------+ | NULL | 1 | +-------+-----------------+ 1 row in set, 2 warnings (0.00 sec)
最初の列では、計算自体がnull値になっていることがわかります。したがって、2番目の列は1
を返しました。 。
その間、警告は次のとおりです。
SHOW WARNINGS
結果:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
ゼロで除算しようとしたため、警告が表示されます(結果としてnull値になります)。
データベースの例
次のようなデータベーステーブルがあるとします。
SELECT * FROM Pets;
結果:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | | 9 | 3 | 1 | Woof | 2020-10-03 | | 10 | 4 | 5 | Ears | 2022-01-11 | +-------+-----------+---------+---------+------------+
ISNULL()
を使用するクエリは次のとおりです そのテーブルに対する機能:
SELECT
PetId,
PetName,
ISNULL( DOB ) AS "DOB is Missing?"
FROM Pets;
結果:
+-------+---------+-----------------+ | PetId | PetName | DOB is Missing? | +-------+---------+-----------------+ | 1 | Fluffy | 0 | | 2 | Fetch | 0 | | 3 | Scratch | 0 | | 4 | Wag | 0 | | 5 | Tweet | 0 | | 6 | Fluffy | 0 | | 7 | Bark | 1 | | 8 | Meow | 1 | | 9 | Woof | 0 | | 10 | Ears | 0 | +-------+---------+-----------------+
その場合、1
を表示する列を作成しました DOB列に何も表示されていないすべてのペット用。
生年月日が記載されていないすべてのペット(つまり、DOB
)を返却したいとします。 フィールドはnull
)。この場合、次のことができます。
SELECT * FROM Pets
WHERE ISNULL(DOB) = 1;
結果:
+-------+-----------+---------+---------+------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------+ | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +-------+-----------+---------+---------+------+
これにより、次の手順を実行した場合と同じ結果が得られます。
SELECT * FROM Pets
WHERE DOB IS NULL;
結果:
+-------+-----------+---------+---------+------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------+ | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +-------+-----------+---------+---------+------+