case when then学习

发布时间:2019-09-20 10:44:09   来源:文档文库   
字号:

sql语句判断方法之一,我也是最近才了解到。以前没有用过,所以做了一下搜集!!!大家一起学习!



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部分将会被自动忽略。

如:

有一张表,里面有3个字段:语文,数学,英语。其中有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 '不及格') as 英语,

from table



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 < 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



你甚至还可以组合这些选项,添加一个 ORDER 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



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

除了选择自定义字段之外,在很多情况下 CASE 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。

语法:

CASE expr WHEN comparison_expr1 THEN return_expr1

[WHEN comparison_expr2 THEN return_expr2

WHEN comparison_exprn THEN return_exprn

ELSE else_expr]

END





在简单的CASE表达式中,ORACLE会搜索expr 等于comparison_expr的第一对when then,然后返回return_expr.如果没有满足条件的when then 并且存在ELSE子句,那么ORACLE会返回else_expr,否则会返回空值。

您不能为所有这些return_exprelse_expr指定文字的NULL





但我试了一下,





Id AGE

- ----------

1 20

1 22

2 10

2 200

3 30

3 40





SQL> select id,age,case id when '1' then 'aaa' when '2' then 'bbb' else NULL end from test;



结果

I AGE CAS

- ---------- ---

1 20 aaa

1 22 aaa

2 10 bbb

2 200 bbb

3 30

3 40

 

严歌苓说,人之间的关系不一定从陌生进展为熟识,从熟识走向陌生,同样是正常进展。

  人与人之间的缘分,远没有想像中的那么牢固,也许前一秒钟还牵手一起经历风雨,后一秒就说散就散,所以,你要懂得善待和珍惜。

  人与人相处,讲究个真心,你对我好,我就对你好,你给予真情,我还你真意,人心是相互的。

  两个人在一起,总会有人主动,但主动久了,就会累,会伤心,心伤了就暖不回来了,凡事多站在对方的角度想一想,多一份忍耐和谦就,就不会有那么多的怨气和误解,也少了一些擦肩而过。

  做人不要太苛刻,太苛无友,人无完人,每个人都有这样或那样的缺点,重在包容。 包容是一种大度,整天笑呵呵的人并不是他没有脾气和烦恼,而是心胸开阔,两个懂得相互包容的人,才能走得越久。

  人与人相处,要多一份真诚,俗语说,你真我便真。常算计别人的人,总以为自己有多聪明,孰不知被欺骗过的人,就会选择不再相信,千万别拿人性来试人心,否则你会输得体无完肤。

  人与人相处不要太较真,生活中我们常常因为一句话而争辩的面红耳赤,你声音大,我比你嗓门还大,古人说,有理不在声高,很多时候,让人臣服的不是靠嘴,而是靠真诚,无论是朋友亲人爱人都不要太较真了,好好说话,也是一种修养。

  俗语说,良言一句三冬暖, 你对我好,我又岂能不知,你谦让与我,我又怎能再得寸进尺,你欣赏我,我就有可能越变越好,你尊重我,我也会用尊重来回报你,你付出爱,必会得到更多的爱。

  与人相处,要多一份和善,切忌恶语相向,互相伤害就有可能永远失去彼此,每个人心中都有一座天平,每个人心中都藏一份柔软,表面再强势的人,内心也是渴求温暖的。

  做人要学会谦虚,虚怀若谷。人人都喜欢和谦虚的人交往,司马懿说:臣一路走来,没有敌人,看见的都是朋友和师长”.这就是胸怀。

  有格局的人,心中藏有一片海,必能前路开阔,又何愁无友。

  人与人相处,开始让人舒服的也许是你的言语和外表,但后来让人信服的一定是你的内在。就如那句,欣赏一个人,始于颜值,敬于才华,合于性格,久于善良,终于人品。

  人这一生,遇见相同的人不容易,遇见正确的人更不容易,只有选择了合适的相处方式,带上真诚与人相处,才会走得更长,更远更久。

人与人相处,要多一份真诚,俗语说,你真我便真。常算计别人的人,总以为自己有多聪明,孰不知被欺骗过的人,就会选择不再相信,千万别拿人性来试人心,否则你会输得体无完肤。

  人与人相处不要太较真,生活中我们常常因为一句话而争辩的面红耳赤,你声音大,我比你嗓门还大,古人说,有理不在声高,很多时候,让人臣服的不是靠嘴,而是靠真诚,无论是朋友亲人爱人都不要太较真了,好好说话,也是一种修养。

  俗语说,良言一句三冬暖, 你对我好,我又岂能不知,你谦让与我,我又怎能再得寸进尺,你欣赏我,我就有可能越变越好,你尊重我,我也会用尊重来回报你,你付出爱,必会得到更多的爱。

  与人相处,要多一份和善,切忌恶语相向,互相伤害就有可能永远失去彼此,每个人心中都有一座天平,每个人心中都藏一份柔软,表面再强势的人,内心也是渴求温暖的。

  做人要学会谦虚,虚怀若谷。人人都喜欢和谦虚的人交往,司马懿说:臣一路走来,没有敌人,看见的都是朋友和师长”.这就是胸怀。

  有格局的人,心中藏有一片海,必能前路开阔,又何愁无友。

  人与人相处,开始让人舒服的也许是你的言语和外表,但后来让人信服的一定是你的内在。就如那句,欣赏一个人,始于颜值,敬于才华,合于性格,久于善良,终于人品。

本文来源:https://www.2haoxitong.net/k/doc/e3832990df80d4d8d15abe23482fb4daa48d1d34.html

《case when then学习.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式