Ich habe einige SQL-Abfragen in Oracle gefunden, die '(+)' enthalten und ich habe keine Ahnung, was das bedeutet. Kann jemand seinen Zweck erklären oder einige Beispiele für seine Verwendung geben? DankeBedeutung von (+) in SQL-Abfragen
Antwort
Es ist Oracles Synonym für OUTER JOIN
.
SELECT *
FROM a, b
WHERE b.id(+) = a.id
gleiche Ergebnis wie
SELECT *
FROM a
LEFT OUTER JOIN b
ON b.id = a.id
Ich werde für die nächste Person notieren, achten Sie darauf, was mit den 'a's und' b's hier passiert ist. In dem Beispiel ist die from-Klausel "[a, b]", aber die Äquivalenzprüfung ist "[b.id = a.id]". Meine Gewohnheit ist es, die Äquivalenz zu behalten "[a.id = b.id]"; also habe ich das Beispiel falsch verstanden. Eine Stunde meines Lebens werde ich nicht zurückkommen; ^) – BIBD
Dazu würde ich '(+)' interpretieren als Orakels Art zu sagen "diese Seite bekommt Nullen, wenn keine Übereinstimmung gefunden werden kann". Verwenden meiner Norm für Äquivalenzen von "[a.id = b.id]"; dann passiert ein Spiegel. Wenn ich die Abfrage neu schreibe, um dem modernen Standard zu folgen, wird "[a.id = b.id (+)]" zu LEFT OUTER und '[a.id (+) = b.id]' wird zu a RECHTE AUSSEN. – BIBD
Das Ding ist der (+) Operator wird direkt in der bedingten Anweisung und auf der Seite der optionalen Tabelle platziert (die, die leere oder Null-Werte innerhalb der Bedingung enthalten darf). – Yergalem
gibt die + eine Abkürzung ist für OUTER JOIN, je nachdem, welche Seite man es auf, es gibt eine LINKS oder RECHTS OUTER JOIN
prüfen der zweite Eintrag in this forum post für einige Beispiele
IIRC, das + wird in älteren Oracle-Versionen verwendet, um einen äußeren Join in der vor-ANSI-SQL-Join-Syntax anzugeben. Mit anderen Worten:
select foo,bar
from a, b
where a.id = b.id+
ist das Äquivalent von
select foo,bar
from a left outer join b
on a.id = b.id
HINWEIS: diese nach hinten sein kann/etwas falsch, denn ich habe noch nie die Pre-ANSI SQL-Syntax verwendet.
Es wird in neueren Versionen von Oracle für diejenigen von uns verwendet, die ANSI sql hassen. –
@Mark Brady genau. Ich fühle, dass es die Absicht der Abfrage klarer macht. Und ich hasse auch ANSI SQL. –
Verwenden Sie dies, um sicherzustellen, dass die Tabelle, der Sie beitreten, die Anzahl der zurückgegebenen Datensätze nicht reduziert. Das ist praktisch, wenn Sie einer Tabelle beitreten, die möglicherweise keinen Eintrag für jeden Schlüssel enthält, dem Sie beitreten.
Zum Beispiel, wenn Sie wurden einem Kunden und Kauftisch verbindet:
Zur Liste der alle Kunden und alle ihre Einkäufe, möchten Sie eine äußere tun verbinden (+) auf der Kauf-Tabelle so Kunden habe nichts gekauft, was immer noch in deinem Bericht erscheint.
- 1. Bedeutung von "." in printf
- 2. Bedeutung von {*; } In ProGuard
- 3. Bedeutung von 'private' Schlüsselwort in Alloy? Bedeutung von 'enum'-Erklärung?
- 4. Bedeutung von 'In' in Java
- 5. Bedeutung von Unterstrich in Groovy
- 6. Bedeutung von (? S) in Regex
- 7. Bedeutung von^Selektor in Registernavigation
- 8. Bedeutung von :: in Java-Syntax
- 9. Bedeutung von "<-" in Swift
- 10. Bedeutung von :: in eckigen Formly
- 11. Bedeutung von $ {} project.basedir in pom.xml
- 12. Bedeutung von `??? -` in C++ Code
- 13. Bedeutung von -DHAVE_CONFIG_H in Makefiles
- 14. Bedeutung von UTS in UTS_RELEASE
- 15. Bedeutung von 'in SQL Pivot
- 16. Bedeutung von `::` in Type Parameter?
- 17. Bedeutung von "this"
- 18. Bedeutung von SPARQL-Operator ';'
- 19. PHP Bedeutung von '//'
- 20. Bedeutung von SEQUENCE_NEXT_HI_VALUE
- 21. Bedeutung von Double.doubleToLongBits (x)
- 22. Bedeutung von bekannten Datentypen
- 23. Bedeutung von !! Javascript
- 24. Bedeutung von Sleep (0)
- 25. Bedeutung von $ get ('0')?
- 26. Bedeutung von [-1,1] [+ !! boolean_var]
- 27. Salesforce doc, Bedeutung von '-'
- 28. Bedeutung von „? <=“ Operator
- 29. Bedeutung von XML-Namen
- 30. Bedeutung von 'inputEV'
dupe: http://stackoverflow.com/questions/430274/oracle-what-does-do-in-a-where-klause – Alkini
Ich habe tatsächlich versucht, nach einer Antwort zu suchen, bevor Sie die Frage, aber nicht bekommen Ergebnisse bei der Suche nach '+' oder '(+). Es ist komisch, dass der Fragetitel in der URL auch den (+) Teil überspringt. – Zabbala
Dies ist ein Duplikat von [diesem Beitrag] (http://stackoverflow.com/questions/430274/oracle-what-does-do-in-a-where-klause). Sie können dort weitere Informationen finden. –