加入收藏 | 设为首页 | 会员中心 | 我要投稿 岳阳站长网 (https://www.0730zz.com.cn/)- 科技、建站、数据库平台、数据湖、视觉智能!
当前位置: 首页 > 云计算 > 正文

聊聊 SQL 中的流程控制,你明白了吗?

发布时间:2022-08-02 11:17:27 所属栏目:云计算 来源:互联网
导读:流程控制的定义 一般是指用来控制程序执行和流程分至点额命令,一般指的是逻辑计算部分的控制。 流程控制种类 常见的流程控制有以下8种: BEGIN ... END WAITFOR GOTO WHILE IF ... ELSE BREAK RETURN CONTINUE 下面给大家具体介绍每种流程控制的用法。 BEGI
  流程控制的定义
  一般是指用来控制程序执行和流程分至点额命令,一般指的是逻辑计算部分的控制。
 
  流程控制种类
  常见的流程控制有以下8种:
 
  BEGIN ... END
 
  WAITFOR
 
  GOTO
 
  WHILE
 
  IF ... ELSE
 
  BREAK
 
  RETURN
 
  CONTINUE
 
 
 
  下面给大家具体介绍每种流程控制的用法。
 
  BEGIN...END
  BEGIN ... END语句用于将多个T-SQL语句合为一个逻辑块。当流程控制语句必须执行一个包含两条或两条以上的T-SQL语句的语句块时,使用BEGIN ... END语句。
 
  语法
  BEGIN
  sql_statement...
  END
  示例
  我们在数据库中打印出我们公众号的名称"SQL数据库开发"
 
  复制
  DECLARE @A VARCHAR(20)
  SET @A='SQL数据库开发'
  BEGIN
  SELECT @A
  END
  1.
  2.
  3.
  4.
  5.
  结果如下:
 
  图片
 
  这里的SELECT @A就是一条被执行的命令语句。
 
  IF [...ELSE]
  IF [...ELSE]表示可以只使用IF,也可以IF和ELSE一起使用,表示条件判断。当满足某个条件使,就执行IF 下面的语句,否则执行ELSE下面的语句
 
  IF语法
  IF <条件表达式>
  {命令行 | 程序块}
  IF示例
  如果某字符串的长度大于5,就打印该字符串
 
  复制
  DECLARE @A VARCHAR(20)
  SET @A='SQL数据库开发'
  IF LEN(@A)>5
  SELECT @A
  1.
  2.
  3.
  4.
  结果:
 
  图片
 
  这里结果与上面的BEGIN...END一样,但是如果我们将条件改成大于8,结果可能就不是这样的了,小伙伴们可以试一下。
 
  IF...ELSE语法
  IF <条件表达式>
  {命令行 | 程序块}
  ELSE {命令行 | 程序块}
  IF...ELSE示例
  如果字符串的长度大于10,就打印该字符串,否则打印"字符串长度太短"
 
  复制
  DECLARE @A VARCHAR(20)
  SET @A='SQL数据库开发'
  IF LEN(@A)>10
  SELECT @A
  ELSE
  SELECT '字符串长度太短'
  1.
  2.
  3.
  4.
  5.
  6.
  结果:
 
  图片
 
  很明显字符串"SQL数据库开发"长度不大于10,所以返回ELSE里的结果了。
 
  WHILE
  WHILE是循环控制,当满足WHILE后面的条件后,就可以循环执行WHILE下面的语句。通常与CONTINUE和BREAK一起使用,Break命令让程序完全跳出循环语句,结束WHILE命令,CONTINUE是让命令继续返回执行
 
  语法
  WHILE  <条件表达式>
  {命令行 | 程序块}
  CONTINUE
  {命令行 | 程序块}
  BREAK
  {命令行 | 程序块}
  示例
  有1到10这样一组数字,从1按顺序开始,遇到偶数就跳过,遇到奇数就打印出来,当遇到9就结束打印。
 
  复制
  DECLARE @i int;
  SET @i = 0;
  WHILE(@i < 10)
  BEGIN
      SET @i = @i + 1;
      IF(@i % 2 = 0)
      BEGIN
          PRINT ('跳过偶数数' + CAST(@i AS varchar));
          CONTINUE;
      END
      ELSE IF (@i = 9)
      BEGIN
          PRINT ('到' + CAST(@i AS varchar) + '就结束打印');
          BREAK;
      END
      PRINT @i;
  END

(编辑:岳阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读