1440. 计算布尔表达式的值 - 力扣(LeetCode)

  1. 1440. 计算布尔表达式的值 - 力扣(LeetCode)

  2. 目标

    1. 输入

      输入:表达式
      left_operandoperatorright_operand
      x>y
      x<y
      x=y
      y>x
      y<x
      x=x
      输入:值
      namevalue
      x66
      y77
    2. 输出

      输出:布尔表达式
      left_operandoperatorright_operandbool
      x>yFALSE
      x<yTRUE
      x=yFALSE
      y>xture
      y<xFALSE
      x=xture
  3. 分析

    计算表 Expressions 中的布尔表达式。

    返回的结果表 无顺序要求 。
    输入:表达式输入:值输出:布尔表达式
    left_operandoperatorright_operandnamevalueleft_operandoperatorright_operandbool
    x>yx66x>yFALSE
    x<yy77x<yTRUE
    x=yx=yFALSE
    y>xy>xture
    y<xy<xFALSE
    x=xx=xture
    namevalueoperatornamevalue内连接查询将x,y的值代入成一张表left_operandoperatorright_operandboolcase...when...条件判断operator的值和xy的比较输出布尔值
    y77>x66x>yFALSE
    y77<x66x<yTRUE
    x66=x66x=yFALSE
    x66>y77y>xture
    x66<y77y<xFALSE
    x66=y77x=xture
  4. 实现

    DROP TABLE IF EXISTS Variables;
    DROP TABLE IF EXISTS Expressions;
    Create Table If Not Exists Variables (name varchar(3), value int);
    Create Table If Not Exists Expressions (left_operand varchar(3), operator ENUM('>', '<', '='), right_operand varchar(3));
    Truncate table Variables;
    insert into Variables (name, value) values ('x', '66');
    insert into Variables (name, value) values ('y', '77');
    Truncate table Expressions;
    insert into Expressions (left_operand, operator, right_operand) values ('x', '>', 'y');
    insert into Expressions (left_operand, operator, right_operand) values ('x', '<', 'y');
    insert into Expressions (left_operand, operator, right_operand) values ('x', '=', 'y');
    insert into Expressions (left_operand, operator, right_operand) values ('y', '>', 'x');
    insert into Expressions (left_operand, operator, right_operand) values ('y', '<', 'x');
    insert into Expressions (left_operand, operator, right_operand) values ('x', '=', 'x');
    SELECT *
    FROM Expressions;
    SELECT *
    FROM Variables;
    SELECT
    # v1.*,operator,v2.*
    v1.name left_operand,
    operator,
    v2.name right_operand
    ,CASE
    WHEN (v1.value>v2.value AND operator='>')THEN 'true'
    WHEN (v1.value<v2.value AND operator='<')THEN 'true'
    WHEN (v1.value=v2.value AND operator='=')THEN 'true'
    ELSE 'false'
    END value
    FROM expressions e,variables v1,variables v2
    WHERE  left_operand=v1.name AND right_operand=v2.name;

  5. 小结

        使用case...when条件查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值