SqlServer逻辑函数

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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值