NICHT IN-Operator funktioniert nicht wie erwartet in Oracle
Ich habe zwei Tabellen: ART und CUST
Beim ausführen der folgenden Abfrage in SQL und SYBASE, es funktioniert.
Oracle ist nicht geben keine Ergebnisse.
select * FROM PROD
where PROD.SECID NOT IN (SELECT CUST.SECID FROM CUST WHERE SECID <> '')
HINWEIS:
PROD.SECID hat, werden alle null-Werte.
CUST.SECID hat alle nicht null-Werte(gültige Werte).
<>''
nicht abrufen aller Datensätze aus innere Unterabfrage, also änderte ich es NICHT NULL IST und jetzt holt Sie die Ergebnisse.
Aber das problem ist, dass wenn die Abfrage ausgeführt wird, als ganzes, es gibt keine Ergebnisse in der Erwägung, dass es sein sollte.
- "Beim ausführen der folgenden Abfrage in SQL" macht keinen Sinn. Die Abfrage ist SQL-und Oracle - ist mithilfe von SQL. Sie sind sich bewusst, dass Oracle nicht "leere Saiten"?
- Sicher sein, geben Rahul der Kredit - (Ruf-Punkte), die er verdient. Klicken Sie auf die Häkchen Links oben seine Antwort auf die Frage "akzeptieren" Sie es als die richtige Antwort auf Ihre Frage. Viel Glück an alle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
NICHT funktioniert wie es sollte. Wenn Sie null-Wert kann man nicht sagen, es ist 'in' bestimmten Satz oder nicht.
Wenn Sie ausschließen möchten, auf bestimmte Werte, die Sie verwenden sollten
not exists
oder, besser, der anti-join:Versuchen Sie dies:
Habe ich bemerkt dass 2 Dinge:
1) Nicht wird FALSE zurückgeben, wenn es mindestens einen NULL-Wert in der Liste. Also, wenn Sie Unterabfrage zurückgeben Nullen, dann die gesamte Abfrage 0 Zeilen zurück.
2) Es ist ungültig-filter in Ihrem Unterabfrage:
Diese Klausel return 0 rows as well as " ist das gleiche wie NULL und jeder Vergleich mit NULL (Ausnahme IST NULL/IST NICHT NULL) FALSE zurück. Bitte schreiben Sie wie folgende: