sql case 函数与详细说明

下面是一个是用case函数来完成这个功能的例子

case具有两种格式。简单case函数和case搜索函数。
--简单case函数

case sex
         when '1' then '男'
         when '2' then '女'
else '其他' end
--case搜索函数
case when sex = '1' then '男'
         when sex = '2' then '女'
else '其他' end

这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。
--比如说,下面这段sql,你永远无法得到“第二类”这个结果

case when col_1 in ( 'a', 'b') then '第一类'
         when col_1 in ('a')       then '第二类'
else'其他' end

下面看一些实例

select country,
sum( case when sex = '1' then
population else 0 end), --男性人口
sum( case when sex = '2' then
population else 0 end) --女性人口
from table_a
group by country;

select sum(population),
case country
when '中国' then '亚洲'
when '印度' then '亚洲'
when '日本' then '亚洲'
when '美国' then '北美洲'
when '加拿大' then '北美洲'
when '墨西哥' then '北美洲'
else '其他' end
from table_a
group by case country
when '中国' then '亚洲'
when '印度' then '亚洲'
when '日本' then '亚洲'
when '美国' then '北美洲'
when '加拿大' then '北美洲'
when '墨西哥' then '北美洲'
else '其他' end;

关于case 二

 

select
case when salary <= 500 then '1'
when salary > 500 and salary <= 600 then '2'
when salary > 600 and salary <= 800 then '3'
when salary > 800 and salary <= 1000 then '4'
else null end salary_class,
count(*)
from table_a
group by
case when salary <= 500 then '1'
when salary > 500 and salary <= 600 then '2'
when salary > 600 and salary <= 800 then '3'
when salary > 800 and salary <= 1000 then '4'
else null end;

时间: 2024-09-20 09:41:14

sql case 函数与详细说明的相关文章

sql substr()函数用法详细

语法  代码如下 复制代码 substr( string, start_position, [ length ] ) 字符串是源字符串. start_position是提取的位置.字符串中的第一个位置始终为1. length  可选的.它是提取的字符数.如果省略该参数,SUBSTR将返回整个字符串. Applies To:  代码如下 复制代码 Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g 实例  代码如下 复制代码 substr('This is a

Informix SQL函数的详细用法

函数 Informix SQL函数的详细用法 一.内部函数 1.内部合计函数 1)COUNT(*) 返回行数 2)COUNT(DISTINCT COLNAME) 返回指定列中唯一值的个数 3)SUM(COLNAME/EXPRESSION) 返回指定列或表达式的数值和: 4)SUM(DISTINCT COLNAME) 返回指定列中唯一值的和 5)AVG(COLNAME/EXPRESSION) 返回指定列或表达式中的数值平均值 6)AVG(DISTINCT COLNAME) 返回指定列中唯一值的平均

sql 日期函数getdate()和case语法

日期函数 定义和用法 GETDATE() 函数从 SQL Server 返回当前的时间和日期. 语法 GETDATE()实例 例子 1 使用下面的 SELECT 语句: SELECT GETDATE() AS CurrentDateTime结果: CurrentDateTime 2008-12-29 16:25:46.635 注释:上面的时间部分精确到毫秒. 例子 2 下面的 SQL 创建带有日期时间列 (OrderDate) 的 "Orders" 表: CREATE TABLE Or

constraint-在check中使用case函数,为什么end后面要加 =1

问题描述 在check中使用case函数,为什么end后面要加 =1 alter table Salaryadd CONSTRAINT check__salary CHECK( CASE WHEN sex = '2' THEN CASE WHEN salary > 1000 THEN 1 ELSE 0 END ELSE 1 END =1 )_**_** 为什么上面语句最后结束的时候(end 后面)要加上 "=1",否则会提示下面的错误信息:An expression of non

constraint-SQL:在check约束中使用Case函数

问题描述 SQL:在check约束中使用Case函数 公司A,这个公司有个规定,女职员的工资必须高于1000块.如果用Check和Case来表现的话,如下所示:CONSTRAINT check__salary CHECK( CASE WHEN sex = '2'THEN CASE WHEN salary > 1000THEN 1 ELSE 0 ENDELSE 1 END = 1 _) 我想问下上面语句中的Then 1 Else 1,就表示是符合约定,而0则表示不符合约束,为什么呢? 解决方案 这

c语言-sql存储函数求助。求大神帮忙!!很急

问题描述 sql存储函数求助.求大神帮忙!!很急 现需要在sql数据库表C中添加一标志列,并根据标志列另一字端活动编号是等于A表的活动编号,还是等于B表活动编号分别赋为1或0.整个sql如何写 解决方案 SELECTC.* CASE WHEN A.活动编号 IS NOT NULL THEN 1 WHEN B.活动编号 IS NOT NULL THEN 0 ENDFROM CLEFT OUTER JOIN AON C.活动编号 = A.活动编号LEFT OUTER JOIN BON C.活动编号

sql常用函数

数据库有许多内置的职能履行的计算数据. 聚合函数的SQL 总的SQL函数返回一个单一的价值计算,从价值的一栏. 标功能的SQL 的SQL标量函数返回一个单一的价值,根据输入值. 有用标职能: UCASE ( ) -转换领域的大写 LCASE ( ) -转换一个外地来小写 min( ) -提取字符的文本字段 len( ) -返回的长度文本字段 ROUND( ) -查房一个数字领域的一些具体小数 NOW( ) -返回当前系统日期和时间 format( ) -格式如何领域显示 提示:总的职能和职责的量

sql case then else的用法

CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果. CASE 搜索函数计算一组布尔表达式以确定结果. 两种格式都支持可选的 ELSE 参数. 语法 简单 CASE 函数: CASE input_expression     WHEN when_expression THEN result_expression         [ ...n ]     [         ELSE else_result_expression     END CASE

sqlserver Case函数应用介绍_MsSql

--简单Case函数CASE sex         WHEN '1' THEN '男'         WHEN '2' THEN '女'ELSE '其他' END--Case搜索函数CASE WHEN sex = '1' THEN '男'         WHEN sex = '2' THEN '女'ELSE '其他' END 这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式.还有一个需要注意的问题,Case函数