SQL IIF() 函数
SQL IIF() 函数用于验证条件是真还是假。
它接受三个参数,即布尔表达式、真值和假值,并根据布尔表达式在 SQL Server 中的值是真还是假返回其中之一。如果条件为真,则返回真值;否则返回假值。
注意 - 如果表达式不是布尔表达式或无效表达式, IIF() 函数将抛出错误。
语法
下面是 SQL IIF() 函数的语法:
IIF( boolean_expression, true_value, false_value )
参数
- boolean_expression - 它是一个有效的布尔表达式。
-
true_value - 它是一个可以是任何数据类型的值,当布尔表达式求值为 true 时返回。
-
false_value - 它是一个可以是任何数据类型的值,当布尔表达式求值为 false 时返回。
返回值
该函数根据布尔表达式返回两个值之一。
示例
在以下示例中,我们使用SQL的 IIF() 函数来验证布尔表达式 ’10 >5′是否求值为true(返回1)还是false(返回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() 函数来验证boolean_expression ‘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’s”表中薪水小于 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() 函数来检查年龄大于指定年龄标准的客户。