Oracle在字符串上的OUTER JOIN(+)-迁移PostgreSQL [英] Oracle's OUTER JOIN (+) on string - Migration PostgreSQL

查看:72
本文介绍了Oracle在字符串上的OUTER JOIN(+)-迁移PostgreSQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将客户端的软件数据库从Oracle迁移到PostgreSQL,在理解查询,查询的功能以及如何迁移查询方面遇到一些麻烦.

I'm migrating a client's software database from Oracle to PostgreSQL, and I have some trouble understanding a query, what it does, and consequently how to migrate it.

查询是:

SELECT * 
FROM TBL1, TBL2, TBL3, TBL4 
WHERE TBL3.Project_ID = TBL1.Project_ID 
 AND TBL2.Type_ID = TBL1.Type_ID 
 AND TBL4.PROPERTY_NAME(+)='Id' 
 AND TBL4.Entity_ID(+)=TBL1.Entity_ID

我不了解的部分是'Id'上的外部联接(+). 在表上联接,可以,但是在字符串上?我不知道它做什么.

And the part I don't get, is the outer join (+) on 'Id'. A join on a table, OK, but on a string? I've no idea of what it does.

有人有主意吗? 谢谢.

Do someone has an idea? Thanks.

推荐答案

TBL4.PROPERTY_NAME(+)='Id'表示该行是内部联接的,则该值必须为'Id',而当该行是外连接,条件评估为真

TBL4.PROPERTY_NAME(+)='Id' means when the line was inner joined, then the value has to be 'Id', but when the line was outer joined, the condition is evaluated as true

但是您应该将语句重写为以下标准:

however you should rewrite the statement to the standard as:

SELECT * 
FROM TBL1
JOIN TBL2 ON TBL2.Type_ID = TBL1.Type_ID
JOIN TBL3 ON TBL3.Project_ID = TBL1.Project_ID
LEFT JOIN TBL4 ON TBL4.Entity_ID=TBL1.Entity_ID AND TBL4.PROPERTY_NAME='Id' 

这篇关于Oracle在字符串上的OUTER JOIN(+)-迁移PostgreSQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆