when、while和as的区别﹖
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了when、while和as的区别﹖相关的知识,希望对你有一定的参考价值。
用法的区别是什么﹖
when、while和as的区别:
从句中的动作与主句中的动作是否同时的区别
1、when所引导的从句,其谓语动词既可是持续动词,也可是短暂动词;谓语动词动作发生的时间可以与主句谓语动词的动作是同时,或之前、之后。
2、while句中的谓语动词应为持续动词,不用短暂动词,谓语动作发生的时间通常与主句谓语动词动作发生时间是同时。
3、as侧重指从句与主句的动作同时进行,谓语动词可以是持续性的,可以是短暂性动词。
扩展资料
一、when
英 [wen] 美 [wɛn]
adv.什么时候; (用于时间的表达方式之后)在那时; 其时; 当时
conj.在…时; 既然; 如果;
pron. 那时;
n.时间,时候; 日期; 场合;
例句
1.The best thing to do when entering unknown territory is smile.
踏入未知地带最好的对策就是微笑。
2.When life gets hard and you want to give up, remember that life is full of ups and downs, and without the downs, the ups would mean nothing.
当生活很艰难,你想要放弃的时候,请记住,生活充满了起起落落,如果没有低谷,那站在高处也失去了意义。
3.Good luck is when an opportunity comes along and you\'re prepared for it.
好运就是当机会来临时,你早已做好了准备。
二、while
英 [waɪl] 美 [hwaɪl, waɪl]
conj.在…期间; 与…同时; 虽然; 而
n.(一段)时间;
vt.消磨,打发(时间);
例句
1.Mommy, you don\'t need to stay while we talk.
妈妈,我们谈话时你不必陪着.
2.It took her a while to get acclimatized to her new surroundings.
她花了一段时间才适应了新的环境。
3.Jim Coulters will mind the store while I\'m away.
我不在的时候吉姆·库尔特斯会照看店铺的。
三、as
英 [əz] 美 [æz,əz]
adv.同样地,一样地; 例如;
prep.作为,以…的身份; 如同;
conj.像,像…一样; 由于; 同时,当…时; 尽管
n.阿斯(古罗马重量单位,约373克);
例句
1.Failure is never quite so frightening as regret do.
比失败更令人恐惧的是懊悔。
2.English has hurt me a thousand times, but I still regard it as my first love.
英语伤我千百遍,我待英语如初恋。
3.A fellow doesn\'t last long on what he has done. He\'s got to keep on delivering as he goes along.--Carl Hubbell, Baseball Player
靠过去完成的无法让人保有成功,必须在路上持续交出成绩。
参考技术A区别:
1、根据从句动作的规律性来区分,若暗示一种规律性,表示“每当……的时候”,英语一般要用when。
如:It's cold when it snows.下雪时天冷。
2、根据主从句动作的先后顺序来区分,若主句与从句所表示的动作不是同时发生,而是有先后顺序时,一般要用when。
如:When he arrives he'll tell us all about the match.等他到了,他会好好给我们讲讲那场比赛的情况。
3、根据是否具有“趁机”意味来区分,若从句所表示的“当……的时候”具有“趁机”的意味,则通常用while。
如:Strike while the iron is hot.趁热打铁。
4、根据是否用作并列连词来区分,when可用作并列连词,表示“这时(突然)”;while也可以用作并列连词,表示“而”“却”(表示对比);但as则没有类似用法。
如:I was just about to go to bed when I heard a knock on the door.我正要睡觉,听见有人敲门。
扩展资料
1、连接副词起连接两个句子或子句。however,moreover,consequently,hence,also,besides,,otherwise,therefore,thus,thereupon等I feel a bit tired. However, I can hold on. 我有点累了,但我能坚持下去。
2、I have never been to Wales. Therefore, Idon't know much about it. 我从未去过威尔士因此我对它知道的不多。
3、连接副词通常位于子句的句首,有时也可位于句中。They talked about it for hours. Finally, they decided to go。他们对此商量了好几个小时,最后他们决定去。
参考资料:百度百科:连接副词
三者可表示“当……时候”,区别如下:
when作为连词,可以引导名词从句,定语从句和时间状语从句。
1、When引导定语从句
a、在定语从句中,when 不翻译。
b、在引导定语从句时,when 从句不能放位于句首,并且通常when 前为表示时间的名词day, year等。
c、在定语从句中,when 是关系副词,在从句中代替先行词做从句的时间状语,修饰从句的谓语。
例句
I won’t forget the day when he says he loves me.
我不会忘记他说他爱我的那一天。
2、When 引导名词性从句
Many students say that their time at university is when they can experience pure love. 表语从句
这里的 when 相当于“the time when”
Many students say that their time at university is the time when they can experience pure love. 改写之后,句子中的when引导的是一个定语从句。
3、When 引导时间状语从句
a、在时间状语中,when 翻译成“当。。。的时候”
b、在时间状语中,when 从句前面或后面是句子。
c)在时间状语中,when是连词,只起连接主句和从句的作用,不做从句的任何成分。 不过when引导的时间状语从句修饰主句的谓语,做主句的时间状语。
例句
I want to be a teacher when I grow up. 当我长大的时候,我要做一名老师。
4、When, while, as 引导的状语从句的区别
When 既可以表示某一点时间,也可以表示某一段时间。在when引导的时间状语从句中,其谓语动词可以是延续性的,也可以是非延续性的,可与主句中的谓语动词同时发生,也可在其后发生。
例句:
a、I was just reading a book when she came into my room.
b、Were you writing when the teacher came in?
While 只能表示某一段时间,不能表示某一点时间。在while 引导的时间状语从句中,其谓语动词只能是延续性的,而且也只能与主句中的谓语动词同时发生或存在。
例句:
a、You cannot do your homework while you are watching TV.
b、When Jim was mending his bike, Lin Tao came to see him.
When 和while的区别在于,while 引导的时间状语从句多用进行时态,而when引导的时间状语从句多用一般时态。
When 表示较短的时间,有的时候也可以指一段时间。
例句:When he was young, he could do eat much more than his brother.
While 常表示一段较长的时间,强调主句谓语动词与从句谓语动词同时发生。
例句:While Peter was reading, his wife was cooking.
只用as, 不用when 或while 的时候
用于表示同一个人的两种动作交替进行,指“一边。。。,一边。。。”
例句:The girl dances as she sings on the stage.
表示两个同步发展的动作或行为,译为“随着。。。”
例句:As time went on, she became more and more worried.
扩展资料
1、When are you going home?
你什么时候回家?
2、When eating a whole cooked fish, you should never turn it over to get at the flesh on the other side
吃一整条鱼时,切忌把它翻过来去吃另一面的肉。
3nother policeman has been injured as fighting continued this morning
今早又有一名警员在冲突中受伤。
4、I never went through a final exam that was as difficult as that one
我从来没有碰到过像那次那么难的期末考试。
5、They were grinning and watching while one man laughed and poured beer over the head of another
当一个男人大笑着把啤酒倒在另一个人头上时,他们都在乐呵呵地看着。
6、The two ministers have yet to meet, but may do so while in New York
两位部长尚未会面,但可能会在纽约碰头。
7、Never apply water to a burn from an electric shock while the casualty is still in contact with the electric current.
当被电击者还连着电时,千万不要把水弄到电击伤口上。
8、While the modelling business is by no means easy to get into, the good model, male orfemale, will always be in demand
尽管模特行业绝不是那么容易进入的,但是好的模特,不论男女,总是需要的。
9、While the news, so far, has been good, there may be days ahead when it is bad.
尽管到现在为止还都是好消息,但是可能过不了几天就会有坏消息传来。
参考资料:百度百科:英语语法
参考技术C1、When 、while 、as表示“当……时候”。when可以和延续性动词连用,也可以和短暂性动词连用;而while和as只能和延续性动词连用。
2、as 用于引出一个持续性动词表示“在……期间”时,其谓语通常只能是那些含有动作(action)和发展(development) 意味的动词,一般不能是那些不用于进行时态的动词(如 be, seem, love, want, agree, see, know, have 等)。如果从句和主句要表示一个人的两个动作交替进行或同时完成时,则多用as,可译为“一边......,一边......”。
一、as的意思是,正当什么的时候。(just as,at the same moment that)随着,,,(whilewhen)它既可表示一个具体的时间点,也可以表示一段时间。
as可表示主句和从句的动作同时发生或同时。持续,即“点点重合”“线线重合”;又可表示一个动作发生在另一个动作的持续过程中,即“点线重合”,但不能表示两个动作一前一后发生。如果主句和从句的谓语动词都表示持续性的动作,二者均可用进行时,也可以一个用进行时,一个用一般时或者都用一般时。
例如:
1、As I got on the bus,he got off. 我上车,他下车。(点点重合)
2、He was writing as I was reading. 我看书时,他在写字。(线线重合)
3、The students were talking as the teacher came in.老师进来时,学生们正在讲话。(点线重合)
二、while的意思是“在„„同时(at the same time that )”“在„„期间(for as long as, during the timethat)”while的本身词义来看,它只能表示一段时间,不能表示具体的时间点。在时间上可以是“线线重合”或“点线重合”,但不能表示“点点重合”。
例如:
1、He was watching TV while she was cooking.她做饭时,他在看电视。(线线重合)
2、He was waiting for me while I was working.我工作的时候,他正等着我。(线线重合)
3、He asked me a question while I was speaking.我在讲话时,他问了我一个问题。(点线重合)
三、when的意思是“当,,,时候(at the time that)无论什么时候(whenever 一,,,就,,,(as soon as)”在,,,以后(after)。它表示的时间概念比较广泛,上述例句中的as或while均可用when代替,因为when不但可以表示具体的时间点,而且也可以表示一段时间。在时间上它既能表示“点点重合”“线线重合”,又能表示“点线重合”。
例如:
1、When he came inshe went out. 他进来,她出去。(点点重合)此句中when从句的动作表示的是一个时间点,when可以用as代替,但不用while代替。
2、When he came back,I was doing some washing. 他回来时,我在洗衣服。(点线重合)此句中when从句的动作表示的是一个时间点,所以只能用as代替,不能用while代替。
3、When I met the Gills, I had been gardening for nearly ten years. 遇到吉尔一家时我已经做了近10年的园艺工作。
扩展资料:
1、连接副词起连接两个句子或子句。however,moreover,consequently,hence,also,besides,,otherwise,therefore,thus,thereupon等I feel a bit tired. However, I can hold on. 我有点累了,但我能坚持下去。
2、I have never been to Wales. Therefore, Idon't know much about it. 我从未去过威尔士因此我对它知道的不多。
3、连接副词通常位于子句的句首,有时也可位于句中。They talked about it for hours. Finally, they decided to go。他们对此商量了好几个小时,最后他们决定去。
参考资料:
百度百科-连接副词
when,while,as显然都可以引导时间状语从句,但用法区别非常大。
一、when可以和延续性动词连用,也可以和短暂性动词连用;而while和as只能和延续性动词连用。
① Why do you want a new job when youve got such a good one already?(get为短暂性动词)你已经找到如此好的工作,为何还想再找新的?
②Sorry,I was out when you called me.(call为短暂性动词)对不起,你打电话时我刚好外出了。
③Strike while the iron is hot.(is为延续性动词,表示一种持续的状态)趁热打铁。
④ The students took notes as they listened.(listen为延续性动词)学生们边听课边做笔记。
二、when从句的谓语动词可以在主句谓语动作之前、之后或同时发生;while和as从句的谓语动作必须是和主句谓语动作同时发生。
1.从句动作在主句动作前发生,只用 when。
①When he had finished his homework,he took a short rest.(finished先发生)当他完成作业后,他休息了一会儿。
②When I got to the airport,the guests had left.(got to后发生)当我赶到飞机场时,客人们已经离开了。
2.从句动作和主句动作同时发生,且从句动作为延续性动词时,when,while,as都可使用。
①When /While /As we were dancing,a stranger came in.(dance为延续性动词)当我们跳舞时,一位陌生人走了进来。
②When /While /As she was making a phonecall,I was writing a letter.(make为延续性动词)当她在打电话时,我正在写信。
3.当主句、从句动作同时进行,从句动作的时间概念淡化,而主要表示主句动作发生的背景或条件时,只能用 as。这时,as常表示“随着……”;“一边……,一边……”之意。
① As the time went on,the weather got worse.(as表示“随着……”之意)
② The atmosphere gets thinner and thinner as the height increases.随着高度的增加,大气越来越稀薄。
③As years go by,China is getting stronger and richer.随着时间一年一年过去,中国变得越来越富强了。
④The little girls sang as they went.小姑娘们一边走,一边唱。
⑤The sad mother sat on the roadside,shouting as she was crying.伤心的妈妈坐在路边,边哭边叫。
4.在将来时从句中,常用when,且从句须用一般时代替将来时。
①You shall borrow the book when I have finished reading it.在我读完这本书后,你可以借阅。
②When the manager comes here for a visit next week,Ill talk with him about this.下周,经理来这参观时,我会和他谈谈此事。
三、when用于表示“一……就……”的句型中(指过去的事情)。
sb.had hardly(=scarcely) done sth.when...=Hardly / Scarcely had sb.done sth.when...
①I had hardly /scarcely closed my eyes when someone knocked at the door.=Hardly / Scarcely had I closed my eyes when someone knocked at the door.我刚一闭上眼,就有人在敲门了。
②I had hardly /scarcely entered my room when the telephone rang.=Hardly /Scarcely had I entered my room when the telephone rang.我刚一走进房门,电话就响
sql case when then else end as用法
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 下面我们来看一下,使用Case函数都能做些什么事情。 一,已知数据按照另外一种方式进行分组,分析。 有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key) 国家(country) 人口(population) 中国 600 美国 100 加拿大 100 英国 200 法国 300 日本 250 德国 200 墨西哥 50 印度 250 根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。 洲 人口 亚洲 1100 北美洲 250 其他 700 想要解决这个问题,你会怎么做?生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。 如果使用Case函数,SQL代码如下: 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; 同样的,我们也可以用这个方法来判断工资的等级,并统计每一等级的人数。SQL代码如下; 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; 二,用一个SQL语句完成不同条件的分组。 有如下数据 国家(country) 性别(sex) 人口(population) 中国 1 340 中国 2 260 美国 1 45 美国 2 55 加拿大 1 51 加拿大 2 49 英国 1 40 英国 2 60 按照国家和性别进行分组,得出结果如下 国家 男 女 中国 340 260 美国 45 55 加拿大 51 49 英国 40 60 普通情况下,用UNION也可以实现用一条语句进行查询。但是那样增加消耗(两个Select部分),而且SQL语句会比较长。 下面是一个是用Case函数来完成这个功能的例子 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,完成对二维表的输出形式,充分显示了Case函数的强大。 三,在Check中使用Case函数。 在Check中使用Case函数在很多情况下都是非常不错的解决方法。可能有很多人根本就不用Check,那么我建议你在看过下面的例子之后也尝试一下在SQL中使用Check。 下面我们来举个例子 公司A,这个公司有个规定,女职员的工资必须高于1000块。如果用Check和Case来表现的话,如下所示 CONSTRAINT check_salary CHECK ( CASE WHEN sex = ‘2‘ THEN CASE WHEN salary > 1000 THEN 1 ELSE 0 END ELSE 1 END = 1 ) 如果单纯使用Check,如下所示 CONSTRAINT check_salary CHECK ( sex = ‘2‘ AND salary > 1000 ) 女职员的条件倒是符合了,男职员就无法输入了 四,根据条件有选择的UPDATE。 例,有如下更新条件 工资5000以上的职员,工资减少10% 工资在2000到4600之间的职员,工资增加15% 很容易考虑的是选择执行两次UPDATE语句,如下所示 --条件1 UPDATE Personnel SET salary = salary * 0.9 WHERE salary >= 5000; --条件2 UPDATE Personnel SET salary = salary * 1.15 WHERE salary >= 2000 AND salary < 4600; 但是事情没有想象得那么简单,假设有个人工资5000块。首先,按照条件1,工资减少10%,变成工资4500。接下来运行第二个SQL时候,因为这个人的工资是4500在2000到4600的范围之内, 需增加15%,最后这个人的工资结果是5175,不但没有减少,反而增加了。如果要是反过来执行,那么工资4600的人相反会变成减少工资。暂且不管这个规章是多么荒诞,如果想要一个SQL 语句实现这个功能的话,我们需要用到Case函数。代码如下: UPDATE Personnel SET salary = CASE WHEN salary >= 5000 THEN salary * 0.9 WHEN salary >= 2000 AND salary < 4600 THEN salary * 1.15 ELSE salary END; 这里要注意一点,最后一行的ELSE salary是必需的,要是没有这行,不符合这两个条件的人的工资将会被写成NUll,那可就大事不妙了。在Case函数中Else部分的默认值是NULL,这点是需要注意的地方。 这种方法还可以在很多地方使用,比如说变更主键这种累活。 一般情况下,要想把两条数据的Primary key,a和b交换,需要经过临时存储,拷贝,读回数据的三个过程,要是使用Case函数的话,一切都变得简单多了。 p_key col_1 col_2 a 1 张三 b 2 李四 c 3 王五 假设有如上数据,需要把主键a和b相互交换。用Case函数来实现的话,代码如下 UPDATE SomeTable SET p_key = CASE WHEN p_key = ‘a‘ THEN ‘b‘ WHEN p_key = ‘b‘ THEN ‘a‘ ELSE p_key END WHERE p_key IN (‘a‘, ‘b‘); 同样的也可以交换两个Unique key。需要注意的是,如果有需要交换主键的情况发生,多半是当初对这个表的设计进行得不够到位,建议检查表的设计是否妥当。 五,两个表数据是否一致的检查。 Case函数不同于DECODE函数。在Case函数中,可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等等。比如说使用IN,EXISTS,可以进行子查询,从而 实现更多的功能。 下面具个例子来说明,有两个表,tbl_A,tbl_B,两个表中都有keyCol列。现在我们对两个表进行比较,tbl_A中的keyCol列的数据如果在tbl_B的keyCol列的数据中可以找到, 返回结果‘Matched‘,如果没有找到,返回结果‘Unmatched‘。 要实现下面这个功能,可以使用下面两条语句 --使用IN的时候 SELECT keyCol, CASE WHEN keyCol IN ( SELECT keyCol FROM tbl_B ) THEN ‘Matched‘ ELSE ‘Unmatched‘ END Label FROM tbl_A; --使用EXISTS的时候 SELECT keyCol, CASE WHEN EXISTS ( SELECT * FROM tbl_B WHERE tbl_A.keyCol = tbl_B.keyCol ) THEN ‘Matched‘ ELSE ‘Unmatched‘ END Label FROM tbl_A; 使用IN和EXISTS的结果是相同的。也可以使用NOT IN和NOT EXISTS,但是这个时候要注意NULL的情况。 六,在Case函数中使用合计函数 假设有下面一个表 学号(std_id) 课程ID(class_id) 课程名(class_name) 主修flag(main_class_flg) 100 1 经济学 Y 100 2 历史学 N 200 2 历史学 N 200 3 考古学 Y 200 4 计算机 N 300 4 计算机 N 400 5 化学 N 500 6 数学 N 有的学生选择了同时修几门课程(100,200)也有的学生只选择了一门课程(300,400,500)。选修多门课程的学生,要选择一门课程作为主修,主修flag里面写入 Y。只选择一门课程的学生,主修flag为N(实际上要是写入Y的话,就没有下面的麻烦事了,为了举例子,还请多多包含)。 现在我们要按照下面两个条件对这个表进行查询 只选修一门课程的人,返回那门课程的ID 选修多门课程的人,返回所选的主课程ID 简单的想法就是,执行两条不同的SQL语句进行查询。 条件1 --条件1:只选择了一门课程的学生 SELECT std_id, MAX(class_id) AS main_class FROM Studentclass GROUP BY std_id HAVING COUNT(*) = 1; 执行结果1 STD_ID MAIN_class ------ ---------- 300 4 400 5 500 6 条件2 --条件2:选择多门课程的学生 SELECT std_id, class_id AS main_class FROM Studentclass WHERE main_class_flg = ‘Y‘ ; 执行结果2 STD_ID MAIN_class ------ ---------- 100 1 200 3 如果使用Case函数,我们只要一条SQL语句就可以解决问题,具体如下所示 SELECT std_id, CASE WHEN COUNT(*) = 1 --只选择一门课程的学生的情况 THEN MAX(class_id) ELSE MAX(CASE WHEN main_class_flg = ‘Y‘ THEN class_id ELSE NULL END ) END AS main_class FROM Studentclass GROUP BY std_id; 运行结果 STD_ID MAIN_class ------ ---------- 100 1 200 3 300 4 400 5 500 6 通过在Case函数中嵌套Case函数,在合计函数中使用Case函数等方法,我们可以轻松的解决这个问题。使用Case函数给我们带来了更大的自由度。 最后提醒一下使用Case函数的新手注意不要犯下面的错误 CASE col_1 WHEN 1 THEN ‘Right‘ WHEN NULL THEN ‘Wrong‘ END 在这个语句中When Null这一行总是返回unknown,所以永远不会出现Wrong的情况。因为这句可以替换成WHEN col_1 = NULL,这是一个错误的用法,这个时候我们应该选择用WHEN col_1 IS NULL。
以上是关于when、while和as的区别﹖的主要内容,如果未能解决你的问题,请参考以下文章
英语语法中what,who,when,where,that的区别