Ho incontrato alcune query SQL in Oracle che contengono '(+)' e non ho idea di cosa significhi. Qualcuno può spiegare il suo scopo o fornire alcuni esempi del suo utilizzo? GrazieSignificato di (+) in query SQL
risposta
È sinonimo di Oracle per OUTER JOIN
.
SELECT *
FROM a, b
WHERE b.id(+) = a.id
dà stesso risultato
SELECT *
FROM a
LEFT OUTER JOIN b
ON b.id = a.id
Prenderò nota per la persona successiva, presta attenzione a ciò che è successo a 'a''s e' b' è qui. Nell'esempio la clausola from è '[a, b]', ma il controllo di equivalenza è '[b.id = a.id]'. La mia abitudine è di mantenere l'equivalenza '[a.id = b.id]'; quindi ho interpretato male l'esempio. Un'ora della mia vita non tornerò più indietro; ^) – BIBD
Per quello, interpreterò '(+)' come il modo di dire di oracolo "questo lato diventa nullo quando non si trova alcuna corrispondenza". Usando la mia norma per le equivalenze di '[a.id = b.id]'; poi succede uno specchio. Se sto riscrivendo la query per seguire lo standard moderno, '[a.id = b.id (+)]' diventa un LEFT OUTER e '[a.id (+) = b.id]' diventa un GIUSTO ESTERNO. – BIBD
La cosa è l'operatore (+) posto direttamente nell'istruzione condizionale e sul lato della tabella opzionale (quella che può contenere valori vuoti o nulli all'interno del condizionale). – Yergalem
Il + è una scorciatoia per outer join, a seconda di quale lato si indossa, indica un DESTRA o SINISTRA OUTER JOIN
Controllare la seconda voce in this forum post per alcuni esempi
IIRC, il + viene utilizzato nelle versioni precedenti di Oracle per indicare un join esterno nella sintassi di join SQL pre-ANSI. In altre parole:
select foo,bar
from a, b
where a.id = b.id+
è l'equivalente di
select foo,bar
from a left outer join b
on a.id = b.id
NOTA: questo può essere all'indietro/leggermente corretto, in quanto non ho mai usato la sintassi SQL pre-ANSI.
Viene utilizzato nelle versioni più recenti di Oracle per quelli di noi che odiano ANSI sql. –
@ Mark Brady esattamente. Sento che rende più chiara l'intenzione della domanda. E odio anche * ANSI SQL. –
Si utilizza questo per assicurare che la tabella che si sta aggiungendo non riduca la quantità di record restituiti. Quindi è utile quando ti unisci a un tavolo che potrebbe non avere un record per ogni chiave su cui stai partecipando.
Ad esempio, se si stavano unendo un cliente e di acquisto tavolo:
alla lista dei tutti i clienti e tutti i loro acquisti, si vuole fare un outer join (+) sul tavolo di acquisto modo che i clienti che non hai ancora acquistato nulla nel tuo rapporto.
dupe: http://stackoverflow.com/questions/430274/oracle-what-does-do-in-a-where-clause – Alkini
Ho effettivamente provato a cercare una risposta prima di pubblicare la domanda ma non ho ricevuto risultati durante la ricerca di '+' o '(+). È strano che il titolo della domanda nell'URL sembra saltare anche la parte (+). – Zabbala
Questo è un duplicato di [questo post] (http://stackoverflow.com/questions/430274/oracle-what-does-do-in-a-where-clause). Potresti trovare ulteriori informazioni lì. –