SQL - IIF() 函数



SQL 的IIF()函数用于验证条件是真还是假。

它接受三个参数boolean_expression、true_valuefalse_value,并根据 SQL Server 中布尔表达式计算结果为真还是假返回两个值之一。如果条件为真,则返回true_value;否则返回false_value

注意 - 如果表达式不是布尔表达式或无效表达式,则IIF()函数将抛出错误。

语法

以下是 SQL IIF()函数的语法:

IIF( boolean_expression, true_value, false_value )

参数

  • boolean_expression - 它是一个有效的布尔表达式。

  • true_value - 它可以是任何数据类型的值,当布尔表达式计算结果为true时返回。

  • false_value - 它可以是任何数据类型的值,当布尔表达式计算结果为false时返回。

返回值

此函数根据 boolean_expression 返回两个值之一。

示例

在下面的示例中,我们使用 SQL IIF()函数来验证布尔表达式'10>5'是否计算结果为真 (返回 1) 或假 (返回 0)。

SELECT IIF(10>5, 1, 0) as Result;

输出

执行上述程序后,将产生以下输出:

+-------+
| Result|
+-------+
| 1     |
+-------+

示例

以下是 SQL IIF()函数的另一个示例,在这里我们使用此函数来比较两个字符串'Hello''World'的长度,以确定哪个更长。

DECLARE
@STR1 VARCHAR(10) = 'Hello', @STR2 VARCHAR(10) = 'World';
SELECT IIF(LEN(@STR1) > LEN(@STR2), @STR1 + ' string is larger', @STR2 + ' string is larger ') as Result;

输出

以下是上述语句的输出:

+-------------------------+
| Result                  |
+-------------------------+
| World string is larger  |
+-------------------------+

示例

如果我们传递无效的 boolean_expression,则此函数会抛出错误。

在此示例中,我们使用 SQL IIF()函数来验证布尔表达式'a>b'是否计算结果为true (返回 'valid')false (返回 'invalid')

SELECT IIF('a>b', 'valid', 'invalid');

输出

上述 SQL 语句产生以下输出:

An expression of non-boolean type specified in a context where a condition is expected, near '('.

示例

您还可以将表列作为参数传递给 SQL IIF()函数,以验证哪个客户的薪水大于特定金额。假设我们使用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 );

以下 SQL 查询验证Customer表中哪些客户的薪水低于2000

SELECT ID, NAME, SALARY, IIF(SALARY > 2000, 'Salary is greater than 1000', 'Salary is less than 1000') AS RESULT FROM CUSTOMERS;

输出

上述 SQL 查询将生成以下输出:

+----+----------+---------------+-----------------------------+
| ID | NAME     | SALARY        | RESULT                      |
+----+----------+---------------+-----------------------------+
|  1 | Ramesh   | 2000.00       | Salary is less than 1000    |
|  2 | Khilan   | 1500.00       | Salary is less than 1000    |
|  3 | kaushik  | 2000.00       | Salary is less than 1000    |
|  4 | Chaitali | 6500.00       | Salary is greater than 1000 |
+----+----------+---------------+-----------------------------+

注意 - 您还可以使用IIf()函数检查年龄大于指定年龄标准的客户的年龄。

sql-logical-funtions.htm
广告