Sqlserver逻辑函数
逻辑函数
CHOOSE
语法syntaxsql复制
CHOOSE ( index, val_1, val_2 [, val_n ] )
参数
index
一个整数表达式,表示其后的项列表的从 1 开始的索引。
如果提供的索引值具有 int 之外的数值数据类型,则该值将隐式转换为整数。 如果索引值超出了值数组的界限,则 CHOOSE 返回 Null。
val_1 … val_n
任何数据类型的逗号分隔的值列表
示例
A. 简单的 CHOOSE 示例
-- 下面的示例从所提供的值列表中返回第三项。
SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
Result
-------------
Developer
(1 row(s) affected)
B. 基于列的简单 CHOOSE 示例
-- 以下示例基于 ProductCategoryID 列中的值返回简单字符串。
USE AdventureWorks2022;
GO
SELECT ProductCategoryID,
CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1
FROM Production.ProductCategory;
C. 配合使用 CHOOSE 和 MONTH
SELECT Name, ModifiedDate,
CHOOSE(MONTH(ModifiedDate),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',
'Summer','Autumn','Autumn','Autumn','Winter') AS Quarter_Modified
FROM SalesLT.ProductModel AS PM
WHERE Name LIKE '%Frame%'
ORDER BY ModifiedDate;
Name ModifiedDate Quarter_Modified
--------------------------- ----------------------- ----------------
HL Road Frame 2002-05-02 00:00:00.000 Spring
HL Mountain Frame 2005-06-01 00:00:00.000 Summer
LL Road Frame 2005-06-01 00:00:00.000 Summer
ML Road Frame 2005-06-01 00:00:00.000 Summer
ML Road Frame-W 2006-06-01 00:00:00.000 Summer
ML Mountain Frame 2006-06-01 00:00:00.000 Summer
ML Mountain Frame-W 2006-06-01 00:00:00.000 Summer
LL Mountain Frame 2006-11-20 09:56:38.273 Autumn
HL Touring Frame 2009-05-16 16:34:28.980 Spring
LL Touring Frame 2009-05-16 16:34:28.980 Spring
(10 rows affected)
IIF
语法syntaxsql复制
IIF( boolean_expression, true_value, false_value )
自变量
boolean_expression
一个有效的布尔表达式。
如果此参数不是布尔表达式,则引发一个语法错误。
true_value
boolean_expression 计算结果为 true 时要返回的值。
false_value
boolean_expression 计算结果为 false 时要返回的值。
实例
A. 简单 IIF 示例
DECLARE @a INT = 45, @b INT = 40;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );
Result
--------
TRUE
B. 带有 NULL 常量的 IIF
SELECT [Result] = IIF( 45 > 30, NULL, NULL );
-- 此语句的结果是一个错误。
C. 具有 NULL 参数的 IIF
DECLARE @P INT = NULL, @S INT = NULL;
SELECT [Result] = IIF( 45 > 30, @P, @S );
Result
--------
NULL