JOIN ON条件中的Oracle SQL Case语句

hrirmatl  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(196)

是否可以在Oracle SQL的JOIN ON语句中使用case语句?
我试过:

SELECT * from table_a JOIN table_b 
ON table_a.id = table_b.table_a_fk_id
AND CASE WHEN table_a.field_1 is not null 
THEN table_a.field_1 = table_b.field_1 
ELSE
1=1
END;

但我得到了错误:
ORA-00905:第4行缺少关键字at = sign
请帮帮我谢谢.

eeq64g8w

eeq64g8w1#

虽然在连接中可以使用case表达式,但在这里实际上并不需要,可以使用布尔逻辑。

SELECT *
FROM table_a
JOIN table_b
    ON table_a.id = table_b.table_a_fk_id
        AND (
            table_a.field_1 = table_b.field_1
            OR table_a.field_1 IS NULL
            )

假设您希望在field_1可用时同时使用table_a_fk_id和field_1,但在field_1为null时仍仅通过table_a_fk_id进行连接。
顺便说一句,“case语句”实际上是pl/sql用于分支的一部分。语法是相似的,但是你可以用case语句做的事情与case表达式做的事情有很大的不同。

相关问题