SQL Server 中的 IIF()函数
SQL Server IIF()函数具有三个参数。 IIF()函数判断或评估第一个参数,如果第一个参数为真,则返回第二个参数;否则,它返回第三个参数。 SQL Server 中使用IIF()函数向查询添加 if-else 逻辑。>
句法 :
IIF(boolean_value, true_value, false_value)
语法中使用的参数:
- 布尔值 –
这是一个需要判断的值。它必须是一个有效的布尔值,否则函数将引发错误。 - true_value –
如果 boolean_value 为 true,则它是要产生的值。 - false_value –
如果 boolean_value 为 false,则为结果值。
要知道的事实: IIF()函数类似于 CASE 表达式 -
CASE
WHEN boolean_expression
THEN true_value
ELSE
false_value
END
示例-1:
要使用 IIF()函数检查 40 < 60 是否:
SELECT IIF(40 < 60, 'True', 'False') AS Result ;
输出 :结果
让我们假设我们有以下名为“ Geektable ”的示例表:
G_id | G_status |
---|---|
1 | 3 |
2 | 2 |
3 | 4 |
4 | 2 |
5 | 3 |
6 | 1 |
7 | 2 |
8 | 1 |
9 | 4 |
10 | 1 |
11 | 4 |
12 | 3 |
13 | 1 |
14 | 3 |
示例 2 :
将 IIF()函数与表列一起使用。
下面的示例在 IIF()函数中使用 IIF() 函数:
SELECT
IIF(G_status = 1, ‘Waiting’,
IIF(G_status=2, ‘InProgress’,
IIF(G_status=3, ‘Rejected’,
IIF(G_status=4, ‘Completed’)
)
)
) AS Status,
COUNT(G_id) AS Count
FROM Geektable
GROUP BY G_status ;
输出 :
Status | Count |
---|---|
Waiting | 4 |
InProgress | 3 |
Rejected | 4 |
Completed | 3 |
示例 3 :
将 IIF()函数与聚合函数一起使用。
下面的示例将 IIF()函数与 SUM()函数一起使用:
SELECT
SUM(IIF(G_status = 1, 1, 0)) AS ‘Waiting’,
SUM(IIF(G_status = 2, 1, 0)) AS ‘InProgress’,
SUM(IIF(G_status = 3, 1, 0)) AS ‘Rejected’,
SUM(IIF(G_status = 4, 1, 0)) AS ‘Completed’,
COUNT(*) AS Total
FROM Geektable;
输出 :
此处,如果状态匹配,则 IIF()函数的结果为 1 或 0。 SUM()函数得出每个状态的编号。
Waiting | InProgress | Rejected | Completed | Total |
---|---|---|---|---|
4 | 3 | 4 | 3 | 15 |