SQL NULLIF()函数
SQL NULLIF() 函数用于验证两个表达式是否相等。
它接受两个参数 expr1 和 expr2 ,如果两个表达式相等,则返回 NULL ;否则返回第一个表达式。
注意: 如果两个表达式不相等,则始终返回第一个表达式,无论第一个表达式大还是第二个表达式大。
语法
以下是SQL NULLIF() 函数的语法:
NULLIF(expr1, expr2);
参数
- expr1 - 它是第一个表达式。
-
expr2 - 它是第二个表达式。
返回值
如果两个表达式相等,该函数返回 NULL 。
示例
如果两个表达式 相等 , NULLIF() 函数返回 NULL 值。
以下程序使用 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查询检查客户 年龄 (第一个表达式)是否等于指定的第二个表达式,如果相等,返回 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 |
+----+----------+-------+---------+