【问题标题】:Using a case statement in place of a logical operator使用 case 语句代替逻辑运算符
【发布时间】:2019-05-08 09:12:19
【问题描述】:

我有一个像

这样的 CASE 语句
CASE WHEN a AND b THEN c ELSE d END

我的表中有一个字段,其中包含 ANDOR 等逻辑运算符

我想在上面的case语句中使用这个字段而不是直接使用操作符 所以:

CASE WHEN a (CASE WHEN field.value = 'AND' THEN 'AND'OR 'OR' END) b THEN c ELSE d END

我也尝试引入用户定义的函数,但均未成功,并且收到了缺少表达式的错误。

我错过了什么?谢谢。

【问题讨论】:

  • @WillardSolutions,感谢您的编辑。对于格式错误,我深表歉意

标签: sql oracle case logical-operators


【解决方案1】:

您缺少的是字符串不是运算符。也许您能做的最好的事情是:

 (CASE WHEN field.value = 'AND' AND (a AND b) THEN 'true'
       WHEN field.value = 'OR' AND (a OR b) THEN 'true'
  END) = 'true'

或者更简单地说:

(field.value = 'AND' AND (a AND b)) OR
(field.value = 'OR' AND (a OR b))

但是,我对您的整体数据模型持怀疑态度。在字段中存储布尔运算符似乎。 . .不寻常。

【讨论】:

  • 我终于关注了这个,但我并不完全满意。我将检查是否有更好的方法来处理我的问题。不过谢谢你的建议:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多