LeetCode(数据库)- 计算布尔表达式的值

Posted 程序员牧码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(数据库)- 计算布尔表达式的值相关的知识,希望对你有一定的参考价值。

题目链接:点击打开链接

题目大意:略。

解题思路:解决方案(2)必须要用 UNION 不能使用 UNION ALL,因为需要去重。

AC 代码

-- 解决方案(1)
select e.left_operand,e.operator,e.right_operand,
case e.operator
    when '>' then if(v1.value>v2.value,'true','false')
    when '<' then if(v1.value<v2.value,'true','false')
    else  if(v1.value=v2.value,'true','false')
end value
    
from Expressions e
left join Variables v1 on v1.name = e.left_operand 
left join Variables v2 on v2.name = e.right_operand

-- 解决方案(2)
WITH t1 AS(SELECT name lvar, value lv, operator, right_operand FROM Expressions JOIN Variables ON left_operand = name),
t2 AS(SELECT lvar, lv, operator, name rvar, value rv FROM t1 JOIN Variables ON right_operand = name),
t3 AS(
    SELECT lvar, rvar, lv = rv 'value', '=' op FROM t2
    UNION
    SELECT lvar, rvar, lv < rv 'value', '<' op FROM t2
    UNION
    SELECT lvar, rvar, lv > rv 'value', '>' op FROM t2
)

SELECT left_operand, operator, right_operand, IF(value = 1, 'true', 'false') value
FROM Expressions JOIN t3 ON left_operand = lvar AND right_operand = rvar AND operator = op

以上是关于LeetCode(数据库)- 计算布尔表达式的值的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode:Database 98.计算布尔表达式的值

算法leetcode2331. 计算布尔二叉树的值(多语言实现)

算法leetcode2331. 计算布尔二叉树的值(多语言实现)

Mysql 计算布尔表达式的值

LeetCode 1106 解析布尔表达式[栈] HERODING的LeetCode之路

过滤器表达式不计算为布尔项,C#