gpt4 book ai didi

oracle - Oracle WHERE 子句中的案例

转载 作者:行者123 更新时间:2023-12-04 13:34:14 32 4
gpt4 key购买 nike

以下 oracle 查询符合并正常工作:

SELECT
Employee.EmployeeId,
Employee.EmployeeName,
Employee.Description,
Employee.IsFrozen
FROM
employee, employeerole, roledef
WHERE
employee.employeeid = employeerole.employeeid
AND employeerole.roleid = roledef.roleid
AND rolename IN (
CASE
WHEN (1 < 2) THEN ('Owner Role')
WHEN (2 < 1) THEN ('Eval Owner Role')
END);

现在在我的情况下,我想添加第二个,即(2 < 1)两个角色名('Owner Role' 和'Eval Owner Role')。
请建议上述查询将如何变化。

提前致谢。

——贾斯汀·塞缪尔

最佳答案

为什么使用 CASE ?为什么不简单

AND (   ( (1 < 2) and rolename IN ('Owner Role', 'Eval Owner Role') )
OR ( (2 < 1) and rolename IN ('Eval Owner Role') ) )

我假设您实际上没有硬编码以评估为 TRUE (1 < 2) 或 FALSE (2 < 1) 的谓词,并且这些谓词实际上是实际代码中的绑定(bind)变量。

如果你真的想使用 CASE声明,你可以编码
AND( CASE WHEN (1 < 2) and rolename IN ('Owner Role', 'Eval Owner Role')
THEN 1
WHEN (2 < 1) and rolename IN ('Eval Owner Role')
THEN 1
ELSE 0
END) = 1

但这对于优化器来说将更加难以处理,对于必须维护它的开发人员来说也不太清楚。

关于oracle - Oracle WHERE 子句中的案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8090234/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com