我的意思是:
CREATE OR REPLACE FUNCTION FUNCTION1(ID IN NUMBER) RETURN NUMBER
BEGIN
SELECT COLUMN1, COLUMN2, COLUMN3 FROM TABLE1
WHERE COLUMN1<= Y AND (CASE WHEN ID < X THEN COLUMN1<COLUMN2 ELSE COLUMN2>COLUMN3 END),
AND COLUMN 3 = XYZ;
RETURN SOMETHING.
END;
Run Code Online (Sandbox Code Playgroud)
我知道case 语句不返回表达式而是返回一个值。我如何使用某种“条件语句”或其他东西来返回表达式?我过去常常使用“IF 条件”在 mysql 中轻松完成,但我不知道如何在 Oracle 11g 中完成。
编辑:它的工作原理是否相同,不仅适用于 where 陈述者而且适用于 select ?
只需使用分组WHERE
条件:
WHERE COLUMN1<= Y
AND ((ID < X AND COLUMN1<COLUMN2)
OR(ID >= X AND COLUMN2>COLUMN3))
AND COLUMN 3 = XYZ;
Run Code Online (Sandbox Code Playgroud)
请记住,您真的只想在此处获得一些布尔评估 - 只要您可以将您的要求减少到不同的条件集,您就可以将其放入WHERE
其中,这将非常快。
使用的时间CASE
是如果您有需要短路的重叠标准。
归档时间: |
|
查看次数: |
11551 次 |
最近记录: |