查看: 540|回复: 4

[每日一题] PL/SQL Challenge 每日一题:2019-6-3 逻辑运算优先级

[复制链接]
论坛徽章:
533
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
发表于 2019-6-7 03:10 | 显示全部楼层 |阅读模式
(原发表于 2011-12-13)


最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。

每两周的优胜者可获得itpub奖励的技术图书一本。

以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808

原始出处:
http://www.plsqlchallenge.com/

作者:Steven Feuerstein

运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品

我定义了这个帮助过程来显示一个布尔类型的值:
CREATE OR REPLACE PROCEDURE plch_show_boolean (
   val IN BOOLEAN)
IS
BEGIN
   DBMS_OUTPUT.put_line (
      CASE val
         WHEN TRUE THEN 'TRUE'
         WHEN FALSE THEN 'FALSE'
         ELSE 'NULL'
      END);
END plch_show_boolean;
/

下列哪些代码块执行之后会显示如下文本?
TRUE
FALSE
TRUE
FALSE

(A)
DECLARE
   this   BOOLEAN := FALSE;
   that   BOOLEAN := FALSE;
BEGIN
   plch_show_boolean (NOT this);
   plch_show_boolean (that);
   plch_show_boolean (NOT that);
   plch_show_boolean (this);
END;
/

(B)
DECLARE
   this   BOOLEAN := FALSE;
   that   BOOLEAN := FALSE;
BEGIN
   plch_show_boolean (NOT that AND NOT this);
   plch_show_boolean (NOT this AND that);
   plch_show_boolean (NOT (this AND that));
   plch_show_boolean (this AND NOT that);
END;
/

(C)
DECLARE
   this   BOOLEAN := FALSE;
   that   BOOLEAN := FALSE;
BEGIN
   plch_show_boolean (this OR that);
   plch_show_boolean (this OR NOT that);
   plch_show_boolean (NOT (this OR that));
   plch_show_boolean (NOT this AND NOT that);
END;
/

(D)
DECLARE
   this   BOOLEAN := FALSE;
   that   BOOLEAN := FALSE;
BEGIN
   plch_show_boolean (
      CASE this WHEN that THEN TRUE ELSE FALSE END);
   plch_show_boolean (this AND that IS NULL);
   plch_show_boolean (this = that);
   plch_show_boolean (this < that);
END;
/

论坛徽章:
469
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:22海蓝宝石
日期:2012-02-20 19:24:27铁扇公主
日期:2012-02-21 15:03:13
发表于 2019-6-10 09:56 | 显示全部楼层

答案:AB

A: this,that 定义为FALSE,not this,not that则为TRUE
B: true and true 为true,true and false 为false, not(false and false) 为true,false and true 为false
C: this OR that, 第一个的结果就是FALSE
D: this ,that 为false, case 语句选择了第一个选择支 TRUE, false and false 为false, false = false 为true,false < false 为false

使用道具 举报

回复
论坛徽章:
533
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
 楼主| 发表于 2019-6-11 03:35 | 显示全部楼层
答案 ABD, 2楼不知为何漏掉了D, 其说明应该是有D的。

布尔表达式的关系运算符优先级是 NOT>AND>OR.

比较有趣的是, 如果要比较两个布尔类型的大小,则FALSE比TRUE要小。
可以通过下列代码验证:
BEGIN
   plch_show_boolean (TRUE > FALSE);
   plch_show_boolean (FALSE > TRUE);
END;
/

使用道具 举报

回复
论坛徽章:
469
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:22海蓝宝石
日期:2012-02-20 19:24:27铁扇公主
日期:2012-02-21 15:03:13
发表于 2019-6-11 20:56 | 显示全部楼层
newkid 发表于 2019-6-11 03:35
答案 ABD, 2楼不知为何漏掉了D, 其说明应该是有D的。布尔表达式的关系运算符优先级是 NOT>AND>OR.比较有趣 ...

呵呵,是的,漏了  

使用道具 举报

回复
认证徽章
论坛徽章:
210
弗兰奇
日期:2016-05-31 16:31:17妮可·罗宾
日期:2016-07-04 11:53:09托尼托尼·乔巴
日期:2016-05-31 16:31:17山治
日期:2016-05-31 16:31:17乌索普
日期:2016-05-31 16:31:17娜美
日期:2016-05-31 16:31:17罗罗诺亚·索隆
日期:2016-05-31 16:31:17蒙奇·D·路飞
日期:2016-05-31 16:31:17乌索普
日期:2016-08-03 10:26:32娜美
日期:2016-08-08 14:57:54
发表于 2019-7-19 13:28 | 显示全部楼层
本期从5-15到6-3期
每10期题目发一次奖,10期内获奖最多的再奖励一本技术图书〜原有的秀才系列徽章继续根据兑换规则兑换礼品〜
大家多多努力哦〜
本期获奖情况如下:(其中5-22、6-3无人获奖)
solomon_007
solomon_007
solomon_007
羽之公公
solomon_007
solomon_007
solomon_007
wmxcn2000
恭喜solomon_007同学获得一本技术图书,图书徽章已发,可以到书单换任意一本〜
各位其他童鞋继续加油哦

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表