语法轻便 CASE 函数

CASE 具有二种格式:

轻便 CASE 函数将有些表明式与一组大致表明式实行比较以鲜明结果。

CASE 搜索函数总结一组布尔表明式以鲜明结果。

三种格式都扶持可选的 ELSE 参数。

语法轻巧 CASE 函数:

CASE input_expression WHEN when_expression THEN result_expression [
…n ] [ ELSE else_result_expression END

CASE 找寻函数:

CASE WHEN Boolean_expression THEN result_expression [ …n ] [ ELSE
else_result_expression END

参数input_expression

是采纳简便 CASE 格式时所总计的表明式。Input_expression 是任何有效的
Microsoft SQL Server 表达式。

WHEN when_expression

应用简便 CASE 格式时 input_expression
所相比较的粗略表明式。When_expression 是私下有效的 SQL Server
表达式。Input_expression 和每个 when_expression
的数据类型必得一致,也许是隐性调换。

n

占位符,证明可以动用多少个 WHEN when_expression THEN result_expression
子句或 WHEN Boolean_expression THEN result_expression 子句。

THEN result_expression

当 input_expression = when_expression 取值为 TRUE,或者
Boolean_expression 取值为 TRUE 时回来的表明式。result expression
是不管三七四十六有效的 SQL Server 表明式。

ELSE else_result_expression

当比较运算取值不为 TRUE
时重回的表明式。假诺省略此参数况兼相比运算取值不为 TRUE,CASE 将重回NULL 值。Else_result_expression 是不管三七八十四有效的 SQL Server
表明式。Else_result_expression 和所有 result_expression
的数据类型必需一律,也许必得是隐性调换。

WHEN Boolean_expression

应用 CASE 找出格式时所总计的布尔表明式。Boolean_expression
是不管三七八十九有效的布尔表明式。

结果类型从 result_expressions 和可选 else_result_expression
的类型会集中回到最高的事前准绳类型。有关更加多新闻,请参见数据类型的优先顺序。

结果值轻松 CASE 函数:总计 input_expression,然后按钦命顺序对种种 WHEN
子句的 input_expression = when_expression 实行测算。

重返第1个取值为 TRUE 的 (input_expression = when_expression) 的
result_expression。

倘使未有取值为 TRUE 的 input_expression = when_expression,则当钦定ELSE 子句时 SQL Server 将回来 else_result_expression;若没有一点点名 ELSE
子句,则赶回 NULL 值。

CASE 搜索函数:按内定顺序为每一个 WHEN 子句的 Boolean_expression 求值。

回到第贰个取值为 TRUE 的 Boolean_expression 的 result_expression。

只要未有取值为 TRUE 的 Boolean_expression,则当钦点 ELSE 子句时 SQL
Server 将回到 else_result_expression;若未有一点点名 ELSE 子句,则赶回
NULL 值

–简单Case函数CASE sexWHEN ‘1’ THEN ‘男’WHEN ‘2’ THEN ‘女’ELSE ‘别的’
END–Case寻找函数CASE WHEN sex = ‘1’ THEN ‘男’WHEN sex = ‘2’ THEN
‘女’ELSE ‘其余’ END

那三种格局,能够达成平等的效劳。简单Case函数的写法相对相比较简洁明了,可是和Case搜索函数相比较,成效方面会微微限定,举例写判别式。还或者有一个索要专心的标题,Case函数只回去第一个切合条件的值,剩下的Case部分将会被电动忽视。

事例:有一张表,里面有3个字段:语文,数学,匈牙利(MagyarországState of Qatar语。在那之中有3条记下分别表示语文70分,数学80分,立陶宛共和国语58分,请用一条sql语句询问出那三条记下并按以下条件显得出来:大于或等于80象征能够,大于或等于60代表及格,小于60分表示不比格。展现格式:语文
数学 法文及格 优越不比格——————————————select(case when 语文=80
then ‘杰出’when 语文=60 then ‘及格’else ‘不如格’卡塔尔 as 语文,(case when
数学=80 then ‘优质’when 数学=60 then ‘及格’else ‘比不上格’卡塔尔国 as 数学,(case
when 斯洛伐克语=80 then ‘优质’when 韩文=60 then ‘及格’else ‘不如格’State of Qatar as
芬兰语,from table

CASE 大概是 SQL
中被误用最多的尤为重要字之一。即便你恐怕从前用过那些第一字来创立字段,不过它还具备越多用法。举例,你能够在
WHERE 子句中央银行使 CASE。

率先让大家看一下 CASE 的语法。在肖似的 SELECT 中,其语法如下:

SELECT myColumnSpec = CASE WHEN A THEN somethingA WHEN B THEN
somethingB ELSE somethingE END

在地方的代码中供给用实际的参数替代尖括号中的内容。下边是多少个粗略的例子:

USE pubs GO SELECT Title, ‘Price Range’ = CASE WHEN price IS NULL THEN
‘Unpriced’ WHEN price 10 THEN ‘Bargain’ WHEN price BETWEEN 10 and 20
THEN ‘Average’ ELSE ‘Gift to impress relatives’ END FROM titles ORDER
BY price GO

那是 CASE 的天下无双用法,可是利用 CASE 其实可以做愈来愈多的事务。比如说上面包车型地铁GROUP BY 子句中的 CASE:

SELECT ‘Number of Titles’, Count(*) FROM titles GROUP BY CASE WHEN
price IS NULL THEN ‘Unpriced’ WHEN price 10 THEN ‘Bargain’ WHEN price
BETWEEN 10 and 20 THEN ‘Average’ ELSE ‘Gift to impress relatives’ END
GO

你居然仍然是能够整合这一个选拔,增加叁个 O牧马人DETiguan BY 子句,如下所示:

USE pubs GO SELECT CASE WHEN price IS NULL THEN ‘Unpriced’ WHEN price
10 THEN ‘Bargain’ WHEN price BETWEEN 10 and 20 THEN ‘Average’ ELSE
‘Gift to impress relatives’ END AS Range, Title FROM titles GROUP BY
CASE WHEN price IS NULL THEN ‘Unpriced’ WHEN price 10 THEN ‘Bargain’
WHEN price BETWEEN 10 and 20 THEN ‘Average’ ELSE ‘Gift to impress
relatives’ END, Title ORDER BY CASE WHEN price IS NULL THEN ‘Unpriced’
WHEN price 10 THEN ‘Bargain’ WHEN price BETWEEN 10 and 20 THEN
‘Average’ ELSE ‘Gift to impress relatives’ END, Title GO

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website