logo

SQLサーバーのISNULL関数

これは SQL Server の組み込み関数です。これにより、ユーザーは次のことを行うことができます NULL 値を置き換えます 指定された置換値を使用して。この記事では、式またはテーブル レコードに NULL 値がある場合に代替値を返す ISNULL 関数の完全な概要を説明します。

構文

以下は、ISNULL 関数を示す構文です。

 ISNULL ( Expression, Replacement ) 

見てわかるように、この構文は 2 つの引数のみを受け入れます。

    表現: NULL をチェックするために使用されます。どのタイプでもかまいません。交換: 式が NULL の場合に返される値です。これは式タイプの値に暗黙的に変換可能である必要があります。

式が NULL と評価された場合、この関数は NULL 値を置換値に置き換えます。議論のとき データ型が異なります 、SQL サーバー 置換値のデータ型を式のデータ型に暗黙的に変換します。 値を返す前に。式が NULL でない場合、式の値を取得します。

ISNULL 関数は、SQL Server (2008 以降)、Parallel Data Warehouse、Azure SQL Database、および Azure SQL Data Warehouse で動作します。

JSのグローバル変数

ISNULL 関数の例

SQL Server の例をいくつか使用して ISNULL 関数を見てみましょう。

1. 数値を指定した ISNULL 関数

以下の例では ISNULL 関数を使用しています。ここで、最初の引数は NULL です。したがって、結果として 2 番目の引数の値を返します。

 SELECT ISNULL(NULL, 25) AS Result; 

実行後、以下の出力が得られます。

SQLサーバーのISNULL関数

2. 文字列データを指定した ISNULL 関数

以下の例では ISNULL 関数を使用しています。ここで文字列値を取得します 'こんにちは' それは最初の引数だからです。 ISNULL() 関数定義の時点では、最初の引数値が NULL でない場合はそれを返します。

 SELECT ISNULL('Hello', 'Javatpoint') AS Result; 

実行後、以下の出力が得られます。

SQLサーバーのISNULL関数

3. 変数を使用した ISNULL 関数

次の例では、ISNULL 関数を使用し、変数を使用して結果を返します。

 DECLARE @expres VARCHAR(45); DECLARE @value VARCHAR(25); SET @expres = NULL; SET @value = 'Javatpoint'; SELECT ISNULL(@expres, @value) AS Result; 

実行後、以下の出力が得られます。

SQLサーバーのISNULL関数

4. テーブルの ISNULL 関数

ここでは、列値に null 値が含まれている場合に、列値を意味のある値に置き換える方法を見ていきます。まず、「」という名前のテーブルを作成しましょう。 従業員' 以下のステートメントを使用します。

 CREATE TABLE Employee (ID INT IDENTITY PRIMARY KEY, Emp_Name VARCHAR(50) NOT NULL, Age INT NULL, Salary INT NULL ); 

ここで、以下のステートメントを使用して、このテーブルにいくつかの値を挿入します。

 INSERT INTO Employee (Emp_Name, Age, Salary) VALUES ('Kevin Huges', 28, 45000), ('Rose Bennet', NULL, 36000), ('Peter Butler', 25, NULL); 

テーブルを確認すると、次のことがわかります。 従業員 2 と 3 には NULL があります 価値。

SQLサーバーのISNULL関数

これらの列の NULL 値をテーブル内で永続的に更新せずに置き換えたいとします。その場合、ISNULL 関数を使用して NULL 値を特定の値に置き換えることができます。

例えば を返したいのですが、 そして 給料 従業員テーブルの列に NULL 値がある場合、従業員の値はそれぞれ 22 と 25000 になります。これは、次のステートメントを使用して行うことができます。

 SELECT ID, Emp_Name, ISNULL(Age, 22) AS Age, ISNULL(Salary, 25000) AS Salary FROM Employee; 

実行後、以下の出力が得られます。

SQLサーバーのISNULL関数

テーブル内に NULL 値を持つ列がない列に対して ISNULL 関数を使用してクエリを実行すると、このクエリは行の実際の値を返します。

例えば を更新しました。 給料 その従業員の ID=2 次のように:

ネットワークの種類
 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

繰り返しますが、ISNULL 関数を実行しても、給与列は変更されません。以下の出力を参照してください。

SQLサーバーのISNULL関数

5. 集約関数を使用した ISNULL

SQL Server では、SUM、AVG などの集計関数を ISNULL 関数とともに使用することもできます。を取得する必要があるとします。 給与の合計 Employee テーブルに存在する列で、給与列に NULL がある場合、給与を追加する前に 25000 に置き換えられます。

集計メソッドを実行する前に、以下のクエリを使用して、従業員の給与を ID が 2 の NULL で更新します。

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

以下の例では、まず NULL 値を 25000 に置き換えてから、それに対して SUM 関数を実行します。以下の出力を参照してください。

 SELECT SUM(ISNULL(Salary, 25000)) AS Sum_of_Salaries FROM Employee; 

実行後、以下の出力が得られます。

SQLサーバーのISNULL関数

同様に、ISNULL 関数を使用して NULL 値を置き換え、平均値を返すことができます。 AVG()関数 。以下のステートメントを参照してください。

 SELECT AVG(ISNULL(Salary, 25000)) AS Avg_of_Salaries FROM Employee; 

実行後、以下の出力が得られます。

SQLサーバーのISNULL関数

SQL Server ISNULL と IS NULL の違い

ISNULL 関数と IS NULL 関数はどちらも SQL Server では異なります。必要がある場合は ISNULL 関数を使用します。 NULL 値を置き換えます 指定された値で。一方、IS NULL 関数は、次のような場合に使用します。 NULL 値を識別する テーブルの中。

それらの違いを説明するために以下の例を見てみましょう

から従業員データを取得するとします。 従業員' Salary 列に NULL 値が含まれるテーブル。このタイプの情報を取得するには、IS NULL 関数を使用する必要があります。 どこ 次のような条項:

 SELECT * FROM Employee WHERE Salary IS NULL; 

給与が NULL である従業員の詳細が返されます。

SQLサーバーのISNULL関数

ここで、ISNULL 関数を使用してこの種の情報を取得しようとすると、SQL Server は次のような処理を実行します。 エラー :

 SELECT * FROM Employee WHERE Salary ISNULL(NULL, 0; 

エラーは次のとおりです。

SQLサーバーのISNULL関数

したがって、SQL Server では、ISNULL を使用して NULL 値を検索することができないことは明らかです。