snowflake中如何将(+)转换成对应的join

How to convert (+) into corresponding join in snowflake

谁能告诉我如何将 Oracle (+) 转换为雪花连接,有没有可行的转换方法。

我有一个非常复杂的 1k 行 SQL 脚本,它需要 30+ (+) 个运算符作为连接。

谁能帮帮我

您可以将 Oracle 的外连接语法转换为 ANSI 语法。因此它将与 Snowflake 和世界其他地方兼容(甚至 Oracle 也支持 ANSI 连接语法)。您应该手动重写它们,但这并不难:

甲骨文:

SELECT d.department_name,
       e.employee_name      
FROM   departments d, employees e
WHERE  d.department_id = e.department_id (+) 
AND    d.department_id >= 30
ORDER BY d.department_name, e.employee_name;

ANSI

SELECT d.department_name,
       e.employee_name     
FROM   departments d
       LEFT OUTER JOIN employees e ON d.department_id = e.department_id
WHERE  d.department_id >= 30
ORDER BY d.department_name, e.employee_name;

您可以在该页面上找到解释(对于 left/right/outer 联接):

https://oracle-base.com/articles/misc/sql-for-beginners-joins#left-outer-join

Snowflake 根据 WHERE clause documentation.

支持 (+) 运算符