SQL语句中case,when,then的用法

SQL语句中case,when,then的用法,第1张

用法如下:

复制代码

SELECT

ss_id,

ss_name,

ss_sex,

CASE

WHENss_sex='1'THEN'男'

WHENss_sex='2'THEN'女'

ELSE'其他'

ENDassex,

ss_age,

sclass_id

FROM

t_b_students

WHERE

1=1

这两个结果是一样的:

需要注意的一点是,Case函数只返回第一个限定值,其余的Case将被自动忽略。

扩展资料:

Case有两种格式:简单函数和Case搜索函数。

简单的例子功能:

CASEsex

WHEN‘1’THEN‘男’

WHEN‘0’THEN‘女’

ELSE‘其他’END

Case搜索函数:

CASEWHENsex=‘1’THEN‘男’

WHENsex=‘0’THEN‘女’

ELSE‘其他’END

显然简单的Case函数天生简洁,但它们只适用于这种单字段单值比较,而Case搜索函数具有适用于所有比较用例的优势。

另一个需要注意的问题是,在Case函数满足了某个条件之后,其余的条件将被自动忽略,这样即使满足了多个条件,在执行过程中也只能识别第一个条件。

当使用CASEWHEN时,您可以将其视为没有字段名的字段,字段值是有条件的,并且在需要使用字段名时可以使用as来定义别名。

恩。。。感觉不大对呢。

小名,2014,NULL,aa@,NULL,123-456-789

是在一个字段里吧,按照你下面的写法,好像是放到了很多的字段里,你确定这个是你要的?

你用group_concat函数试试,应该能达到你上面的需求。(就是没有null)

至于你上面的问题,你的语句去掉group查出来的结果应该是

1000 小名 null null null null null

1000 null 2014 null null null null

。。。。。。。。。

你在group聚合的时候,没有指令上面的字段和下面的字段用什么方式结合,就是说“小名+null”用什么方式结合,也就是说在case when的外层少了一个聚合函数,不过按照这个写法,这个聚合函数是什么我还真不清楚,因为不管怎么聚和每个字段都会出现一堆的NULL,跟你的要求不符。

比较简单的解决办法,个人建议补齐1-6,没有就写null,这样查询的话用group_concat就行。

如果不加,个人感觉就比较麻烦了。

先用null合并,就是不加单引号的null,聚合后在显示的时候用上ifnull

case 列 when 值1 then 值2 --当列的值等于值1 就返回值2

when 值3 then 值4 --当列的值等于值3 就返回值4

end

case when 列=值1 then 值2 --当列的值等于值1 就返回值2

when 列=值3 then值4 --当列的值等于值3 就返回值4

end

CASE 可能是 SQL 中被误用最多的关键字之一 虽然你可能以前用过这个关键字来创建字段 但是它还具有更多用法 例如 你可以在 WHERE 子句中使用 CASE

首先让我们看一下 CASE 的语法 在一般的 SELECT 中 其语法如下

SELECT  =

CASE

WHEN  THEN

WHEN  THEN

ELSE

END

在上面的代码中需要用具体的参数代替尖括号中的内容 下面是一个简单的例子

USE pubs

GO

SELECT

Title

Price Range =

CASE

WHEN price IS NULL THEN Unpriced

WHEN price < THEN Bargain

WHEN price BEEEN and 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 < THEN Bargain

WHEN price BEEEN and THEN Average

ELSE Gift to impress relatives

END

GO

你甚至还可以组合这些选项 添加一个 ORDER BY 子句 如下所示

USE pubs

GO

SELECT

CASE

WHEN price IS NULL THEN Unpriced

WHEN price < THEN Bargain

WHEN price BEEEN and THEN Average

ELSE Gift to impress relatives

END AS Range

Title

FROM titles

GROUP BY

CASE

WHEN price IS NULL THEN Unpriced

WHEN price < THEN Bargain

WHEN price BEEEN and THEN Average

ELSE Gift to impress relatives

END

Title

ORDER BY

CASE

WHEN price IS NULL THEN Unpriced

WHEN price < THEN Bargain

WHEN price BEEEN and THEN Average

ELSE Gift to impress relatives

END

Title

GO

注意 为了在 GROUP BY 块中使用 CASE 查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块

lishixinzhi/Article/program/SQLServer/201311/11236

你估计是问的case语句与case表达式

在存储过程中,case语句when后都要加分号而case表达式中不需要

你看这个是表达式的

case有两种表达式:

1 简单Oracle case表达式,使用表达式确定返回值

语法:

case search_expression

WHEN expression1 THEN result1

WHEN expression2 THEN result2

WHEN expressionN THEN resultN

ELSE default_result

END

2 搜索case表达式,使用条件确定返回值

语法:

case

WHEN condition1 THEN result1

WHEN condistion2 THEN result

WHEN condistionN THEN resultN

ELSE default_result

END

以上就是关于SQL语句中case,when,then的用法全部的内容,包括:SQL语句中case,when,then的用法、mysql case when 碰上中文字符串、sql中case的用法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9862502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存