当前位置: 首页 > news >正文

网上学编程的有哪些比较好的网站jquery做手机网站

网上学编程的有哪些比较好的网站,jquery做手机网站,虚拟主机网站后台,网站源码爬取PgSQL技术内幕 - case when表达式实现机制 CASE表达式如同 C语言中的if/else语句一样,为SQL添加了条件逻辑处理能力,可以根据不同条件返回不同结果。PgSQL支持两种语法:简单表达式和搜索表达式。 1、搜索表达式 语法如下: CASE WH…

PgSQL技术内幕 - case when表达式实现机制

CASE表达式如同 C语言中的if/else语句一样,为SQL添加了条件逻辑处理能力,可以根据不同条件返回不同结果。PgSQL支持两种语法:简单表达式和搜索表达式。

1、搜索表达式

语法如下:

CASE WHEN condition THEN result[WHEN ...][ELSE result]
END

表达式计算过程:

1fa4cc6e303f417fb57ae6e61647e5f3.png

按照顺序依次计算WHEN子句的条件表达式:condition1,condition2...,当遇到结果为真的分支就返回相应的THEN结果;若不为真,则继续下一个WHEN条件计算;若所有WHEN都不为真,则返回ELSE默认值;当没有指定ELSE时,就返回NULL。

2、简单表达式

语法如下:

CASE expressionWHEN value THEN result[WHEN ...][ELSE result]
END

表达式计算过程:

7402926e89b3e2fbc9a83fc98307eb19.png

首先计算表达式testexpr的值,然后依次与WHEN中值:value1,value2...进行比较,遇到匹配的就返回THEN对应的结果;如果没有匹配则继续下一个WHEN值比较;若所有WHEN都不匹配则返回ELSE的默认值;如果没有指定ELSE则返回NULL。

3、搜索表达式实现机制

3.1 结构体

18e6c28e9e3eb7ff06493a1a2431c5c2.png

3.2 搜索表达式的实现机制

b7f818831d0913612bf46d616dc0f992.png

首先生成表达式计算步骤:ExecInitExprRec函数的T_CaseExpr分支。大致分为2大部分:

1)所有when的表达式caseExpr->args。首先通过ExecInitExprRec初始化when->expr的表达式计算步骤;然后添加EEOP_JUMP_IF_NOT_TRUE步骤,当when->expr表达式步骤计算为false时需要跳到下一个when,后面的state->steps[whenstep].d.jump.jumpdone = state->steps即为跳转位置;接着ExecInitExprRec初始化THEN的表达式(when->result)计算步骤;最后通过EEOP_JUMP跳到case的结束位置,它的结束位置需要计算完ELSE表达式后进行调整。

2)所有when表达式计算步骤生成后,需要对ELSE表达式进行初始化,即调用ExecInitExprRec对caseExpr->defresult生成计算步骤;最后调整EEOP_JUMP的跳转位置

3.3 简单表达式的实现机制

643907aa65f67e85a897bd6c6be51ba1.png

和搜索表达式不同,需要对CASE的表达式生成计算步骤,即caseExpr->arg的步骤;当该表达式结果类型为变长类型时,需要添加EEOP_MAKE_READONLY步骤进行结果值拷贝。

当没有ELSE时怎么办?

transformCaseExpr...defresult = (Node *) c->defresult;if (defresult == NULL){A_Const    *n = makeNode(A_Const);n->val.type = T_Null;n->location = -1;defresult = (Node *) n;}newc->defresult = (Expr *) transformExprRecurse(pstate, defresult);...

也就是会添加一个const节点表示NULL,caseExpr->defresult总是有值。

参考

https://www.postgresql.org/docs/12/functions-conditional.html

http://www.yayakq.cn/news/253769/

相关文章:

  • 定制类网站建设网页开发工具的作用有多大
  • 做网站不用tomcat行吗门户地方网站 策略
  • 用c语言怎么做网站帮忙做公司网站
  • 网络网站设计培训wordpress中文站
  • 福州模板建站定制网站淄博桓台学校网站建设哪家好
  • 网站改名 seo上海公共招聘网官方网站
  • 怎么看网站用什么代码做的徐州网站建设制作工作室
  • 网站上面的头像怎么做的企业网站开发周期
  • 贵阳网站定制开发怎样推广品牌
  • 站长工具seo下载北京网站设计定制开发建设公司
  • 合肥城乡建设网站首页邢台专业网站建设报价
  • 温岭专业自适应网站建设北京最新消息今天新增病例
  • 成都营销网站建设百度站长平台电脑版
  • 设计logo网站有哪些免费修改wordpress入口地址
  • 网页做好怎么变成网站谷歌网站怎么做推广
  • 艾瑞网的网站架构京东网站建设思维导图
  • 企?I网站建站 ?V州 ??l嗯嗯嗯 嗯嗯嗯嗯嗯嗯哼哼哼哼哼哼这是什么歌英文的
  • 企业网站源码安装教程郑州网站推广公司案例
  • 铁岭免费移动网站建设建设一个网站选择的服务器
  • 网站建设 费用 入哪个科目wordpress修改mysql
  • 肇庆网站制作软件网站建设发展状况
  • 电子商务网站的定义中职校园网站建设建议
  • 教你如何创建自己的网站lol做任务领头像网站
  • 派点网站建设安徽企业网站制作
  • 微商城网站建设平台怎样让网站做301处理
  • 营销型网站建设讨论题深圳工程建设
  • 网站建设与电子商务的教案wordpress博客搭建
  • 运动健身型网站开发用wordpress建站之后如何优化
  • 郑州网站优化的微博_腾讯微博图书网站开发介绍
  • 新手做网站推荐做网站的要素