ISNULL()、NVL()、IFNULL()、または COALESCE() と同等の SQLite
-
SQLite データベースで
NULL
値を持つレコードをフェッチする -
THEN
とELSE
を使用して、SQLite データベースのNULL
値を確認する -
SQLite データベースで
COALESCE()
関数を使用する -
SQLite データベースで
NVL()
関数を使用する -
COALESCE()
関数とifnull()
関数の違い -
COALESCE()
関数とisnull()
関数の違い
SQLite は、データベースからレコードを作成、読み取り、更新、および削除するために使用されます。 データベースには、データを維持するためのさまざまなテーブルが含まれています。
各テーブルは、レコードを保持する行と列で構成されます。 これらのレコードには多くの場合、空または null の値が含まれているため、データの取得中に問題やエラーが発生します。
SQLite データベースで NULL
値を持つレコードをフェッチする
SQLite データベースからレコードを取得するには、SQLite ステートメントで SELECT
句を使用します。 SELECT
ステートメントも NULL
値をフェッチして無視し、値のみを持つレコードをフェッチします。
SELECT field
FROM table
WHERE field = aCondition
テーブル内に空の値があると問題が発生します。 SELECT
ステートメントでは、空の値を持つレコードに対応するために、指定されたテキストで空の値を記録または埋めるために、NULL
チェックが必要です。
SELECT field, [isnull](field, '')
FROM table
WHERE field = aCondition
上記のステートメントでは、NULL
値は isnull()
関数を認識できない場合があります。 この問題に対処するために、isnull()
関数と同様の関数である ifnull()
関数があります。
ifnull()
関数の完全な構文は次のとおりです。
ifnull()
関数の構文:
ifnull(column, alternateValue)
パラメーター:
column |
SQLite データベースのターゲット列。 |
alternateValue |
戻り値が null または空の場合に選択された値。 |
以下のステートメントでは、ifnull()
関数を SELECT
ステートメントと共に使用しています。 最初のステートメントは、すべての NULL
値をレコードから削除し、それらを空の文字列に置き換えます。
データベース レコードの NULL
値の代わりに任意の値を追加できます。 これは、SQLite データベースで NULL
値が This is a NULL
文字列値に置き換えられた 2 番目のステートメントで示されます。
ifnull()
関数は正確に 2つの引数を取り、指定された引数が両方とも NULL
の場合は、最初の空でない文字列またはテキスト、または NULL
を返します。
SELECT ifnull(NameofColumn,'')
SELECT ifnull(NULL,'This is a NULL');
THEN
と ELSE
を使用して、SQLite データベースの NULL
値を確認する
または、最初のシナリオが条件に合わない場合は、条件文 IS NULL
を使用して、テーブル内の空の値をチェックできます。
以下の SQLite ステートメントは、ISNULL(fieldName, 0)
コマンドと同等です。 IS NULL
句は、データベース内のすべての空の値を返します。
値が見つかった場合、THEN
は空の値を 0
値に置き換えます。何かが見つかった場合 (空でない場合)、ELSE
は値を変更しません。
SELECT fieldName FROM NameOfTable WHERE fieldName IS NULL THEN 0 ELSE fieldName END
SQLite データベースで COALESCE()
関数を使用する
ifnull()
関数と同様に、COALESCE()
関数は、指定された値が NULL
である列の値に代替値を提供します。 COALESCE()
関数で null 値をチェックする SQLite ステートメントを作成するには、指定されたテーブルのステートメントを作成します。
関数 COALESCE()
は SQLite バージョン 3.8.6 以降で動作します。
ID | 量 |
---|---|
1 | 200 |
2 | 13 |
3 | ヌル |
4 | 30 |
5 | 512 |
SELECT COALESCE(Quantity, 0) AS Inventory
FROM Product;
更新されたテーブル出力:
ID | 量 |
---|---|
1 | 200 |
2 | 13 |
3 | 0 |
4 | 30 |
5 | 512 |
SQLite データベースで NVL()
関数を使用する
COALESCE()
関数と同様に、NVL()
関数も同じことを行います。 データベース内の空の値をチェックし、NVL()
関数で指定された別の値に置き換えます。
違いは、isnull()
関数が SQL サーバーの Oracle 関数である NVL()
関数に置き換えられたことです。
COALESCE()
関数と ifnull()
関数の違い
COALESCE()
関数と ifnull()
関数の主な違いは、ifnull()
関数が 2つの引数しかとらないことです。 第 1 引数が NULL
かどうかをチェックし、NULL
の場合は第 2 引数に置き換えます。
逆に、関数 COALESCE()
は 2つ以上のパラメーターを取り、最初の引数が NULL
かどうかをチェックします。 最初の引数が NULL
の場合、2 番目の引数をチェックします。
2 番目の引数が NULL
の場合、空でない値が見つかるまで次の引数をチェックし続け、それを最初の NULL
引数に置き換えます。
SELECT IFNULL('any value', 'extra value');
SELECT IFNULL(NULL,'extra value');
SELECT COALESCE(NULL, 'extra value');
SELECT COALESCE(NULL, 'any value', 'extra value');
SELECT COALESCE(NULL, NULL, NULL, NULL, 'the non-null value');
出力:
any value
extra value
extra value
some value
the non-null value
COALESCE()
関数と isnull()
関数の違い
主に、両方の関数は同じ機能を実行し、NULL
値をチェックして、指定された空でない値に置き換えます。 ただし、動作には違いがあります。
- 違いは、
isnull()
関数は 1 回だけ評価されるのに対し、COALESCE()
関数は複数回評価されることです。 - もう 1つの違いは、データ型を決定する際に、関数
isnull()
が最初の引数のデータ型を使用するのに対し、COALESCE()
関数はCASE
式ルールを使用し、最も優先度の高いデータ型を取ることです。 . - 最後の違いは、関数
isnull()
がNULL
値を返さないことです。この関数の結果は常に非 Nullable であると想定しています。COALESCE()
関数はNULL
式を返すことができます。
例 1:
CREATE TABLE example
(
column1 INTEGER NULL,
column2 AS COALESCE(column1, 0) PRIMARY KEY,
column3 AS ISNULL(column1, 0)
);
出力:
# the statement fails as the nullability of the COALESCE function evaluates to NULL
Error: PRIMARY KEY cannot accept NULL values
例 2:
CREATE TABLE example
(
column1 INTEGER NULL,
column2 AS COALESCE(column1, 0),
column3 AS ISNULL(col1umn, 0) PRIMARY KEY
);
出力:
# the above statement works as the nullability of the ISNULL function evaluates as NOT NULL.
No error
Hi, I'm Junaid. I am a freelance software developer and a content writer. For the last 3 years, I have been working and coding with Python. Additionally, I have a huge interest in developing native and hybrid mobile applications.
LinkedIn