用法如下:
复制代码
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的用法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)