SQL - NULLIF() 函式



SQL 的NULLIF() 函式用於驗證兩個表示式是否相等。

它接受兩個引數expr1expr2,如果兩個表示式相等,則返回NULL;否則返回第一個表示式。

注意 - 如果兩個表示式不相等,它始終返回第一個表示式,無論第一個表示式是否大於第二個表示式。

語法

以下是 SQL NULLIF() 函式的語法:

NULLIF(expr1, expr2); 

引數

  • expr1 - 它是第一個表示式。

  • expr2 - 它是第二個表示式。

返回值

如果兩個表示式相等,則此函式返回NULL

示例

如果兩個表示式相等,則NULLIF() 函式返回NULL 值。

以下 SQL NULLIF() 函式用於確定第一個表示式100 是否等於第二個表示式100

SELECT NULLIF(100, 100) As Result; 

輸出

以下是上述查詢的輸出:

+--------+
| Result |
+--------+
| NULL   |
+--------+

示例

如果兩個表示式不同,則此函式返回第一個表示式。

在此示例中,我們使用 SQL NULLIF() 函式來驗證第一個表示式'50' 是否等於第二個表示式'30'

SELECT NULLIF(50, 30) As Result; 

輸出

執行上述語句後,將產生以下輸出:

+--------+
| Result |
+--------+
| 50     |
+--------+

示例

以下是 SQL NULLIF() 函式的另一個示例,這裡,我們使用此函式來比較兩個字串,它們是否相等。

DECLARE @EXPR1 VARCHAR(10) = 'HELLO', @EXPR2 VARCHAR(10) = 'HELLOWORLD';
SELECT NULLIF(@EXPR1, @EXPR2) AS RESULT;

輸出

以上 SQL 語句產生以下輸出:

+--------+
| Result |
+--------+
| HELLO  |
+--------+

示例

如果我們將第一個表示式的值作為NULL 傳遞給函式,則此函式會丟擲錯誤。

在此程式中,我們將第一個表示式的值作為NULL 傳遞給NULLIF() 函式,以將其與第二個表示式20 進行比較。

SELECT NULLIF(NULL, 20) As Result; 

輸出

執行上述查詢後,將產生以下輸出:

The type of the first argument to NULLIF cannot be the NULL constant because the type of the first argument has to be known.

示例

您還可以將表列作為引數傳遞給 SQL NULLIF() 函式,以檢查兩列的內容是否相等。假設我們使用CREATE 語句建立了一個名為Customer 的表,如下所示:

CREATE TABLE CUSTOMERS(    
   ID INT NOT NULL,    
   NAME VARCHAR (20) NOT NULL,    
   AGE INT NOT NULL,    
   ADDRESS CHAR (25) ,    
   SALARY DECIMAL (18, 2));

現在,讓我們使用INSERT 語句向Customers 表中插入一些記錄,如下所示:

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ); 
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 ); 
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'kaushik', 23, 'Kota', 2000.00 ); 
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'Ganesh', 32, 'Punjab', 2200.00 ); 
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Rohan', 32, 'Delhi', 2250.00 );

以下 SQL 查詢檢查客戶Age(第一個表示式)是否等於指定的第二個表示式,如果相等,則返回NULL;否則返回Customers 表中第一個表示式(客戶年齡)。

SELECT ID, NAME, AGE, NULLIF(AGE, 32) AS RESULT FROM CUSTOMERS;

輸出

以上 SQL 查詢生成以下輸出:

+----+----------+-------+---------+
| ID | NAME     | AGE   | RESULT  |
+----+----------+-------+---------+
|  1 | Ramesh   | 32    | NULL    |
|  2 | Khilan   | 25    | 25      |
|  3 | kaushik  | 23    | 23      |
|  4 | Chaitali | 25    | 25      |
|  5 | Ganesh   | 32    | NULL    |
|  6 | Rohan    | 32    | NULL    |
+----+----------+-------+---------+
sql-logical-funtions.htm
廣告