SAP HANA Union e Union All: OperaEsempi di tor

โšก Riepilogo intelligente

SAP HANA OperaGli operatori TOR eseguono calcoli, confronti di valori o assegnazioni all'interno di SQL. Esistono sei famiglie: operatori unari e binari, aritmetici, di stringa, di confronto, logici e di insieme come UNION e INTERSECT.

  • โž• Unario e binario: Un operatore unario accetta un operando, mentre un operatore binario ne accetta due.
  • ๐Ÿงฎ Aritmetica: Addizione, subtracLe operazioni di divisione, moltiplicazione e moltiplicazione agiscono su operandi numerici.
  • ๐Ÿ”— Concatenazione di stringhe: Due barre verticali uniscono stringhe, espressioni o costanti in un unico valore.
  • ๏ธ Confronto: Uguale, maggiore, minore e le loro combinazioni restituiscono un valore di veritร  per il filtraggio.
  • ๐Ÿ”€ Logico: Gli operatori AND, OR e NOT combinano le condizioni all'interno di una clausola WHERE.
  • ๐Ÿงฉ Impostato Operatori: UNION rimuove i duplicati, UNION ALL li mantiene, INTERSECT restituisce le righe comuni, EXCEPT subtracts.
  • ๐Ÿ“Š Esempio pratico: Due tabelle che condividono gli stessi valori dimostrano i diversi risultati ottenuti da ciascun operatore di insieme.

SAP Operatori HANA UNION e UNION ALL

SAP HANA Operator puรฒ essere utilizzato per calcoli, confronti di valori o per assegnare valori.

SAP HANA OperaTors

  • Unario e binario Operator
  • Aritmetica Operator
  • Corda OperaTors
  • Confronto Operator
  • logico Operator
  • Impostato Operator

Ogni operatore restituisce un valore, motivo per cui possono essere annidati l'uno nell'altro. L'ordine in cui vengono valutati รจ determinato dalle regole di precedenza, spiegate dopo le singole famiglie.

Unario e binario Operator

Operator Funzionamento Descrizione
unario Un operatore unario si applica a un operando Operatore unario di addizione (+) Operatore unario di negazione (-) Negazione logica (NOT)
Binario Un binario Operator si applica su due operandi Operatori moltiplicativi ( *, / ) Operatori additivi ( +,- ) Operatori di confronto ( =,!=,<,>,<=,>=) Operatori logici ( AND, OR )

Aritmetica Operator

  • Addizione (+)
  • Subtraczione (-)
  • Moltiplicazione ( * )
  • Divisione (/)

Corda Operator

Una stringa Operator รจ un operatore di concatenazione che combina due elementi, quali stringhe, espressioni o costanti, in uno.

Due barre verticali โ€œ||โ€ viene utilizzato come operatore di concatenazione.

Confronto Operator

L'operatore di confronto รจ utilizzato per confrontare due operandi. Di seguito รจ riportato l'elenco dei Confronti Operator-

  • Uguale a ( = )
  • Maggiore di ( > )
  • Less Di (<)
  • Maggiore o uguale a ( >= )
  • Less minore o uguale a ( <= )
  • Diverso (!= , <> )

logico Operator

L'operatore logico viene utilizzato nei criteri di ricerca.

Es. WHERE condizione1 AND/OR/NOT condizione2

Di seguito รจ riportato l'elenco degli operatori logici:

  • E โ€“ (ad esempio DOVE condizione1 E condizione2)
    Se sia la Condizione 1 che la Condizione 2 sono vere, la condizione Combina รจ vera altrimenti sarร  falsa.
  • OPPURE โ€“ (ad esempio DOVE condizione1 OPPURE condizione2)
    Se Condizione1 O Condizione2 รจ vera, la condizione combinata รจ vera o falsa se entrambe le condizioni sono false.
  • NON โ€“ (ad esempio, WHERE condizione NON)
    La condizione NOT รจ vera Se la condizione รจ falsa.

Impostato OperaTors

  • UNION โ€“ Combina due o piรน istruzioni SELECT o query senza duplicati.
  • UNION ALL โ€“ Unisce due o piรน istruzioni SELECT o query, includendo tutte le righe duplicate.
  • INTERSECT โ€“ Combina due o piรน istruzioni SELECT o query e restituisce tutte le righe comuni.
  • EXCEPT โ€“ Prende l'output della prima query e rimuove la riga selezionata dalla seconda query.

Per esempio Ho due tabelle (tabella1, tabella2) in cui alcuni valori sono comuni.

Impostato Operatori dentro SAP HANA

Utilizziamo l'operatore Set (Unione, Unione ALL, Intersect, tranne) per queste due tabelle SQL come sotto -

Crea Tabella1-Script SQL

CREATE COLUMN TABLE DHK_SCHEMA.TABLE1
( ELEMENT CHAR(1),
  PRIMARY KEY (ELEMENT)
);
INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('P');
INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('Q');
INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('R');
INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('S');
INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('T');

Crea Tabella2-Script SQL

CREATE COLUMN TABLE DHK_SCHEMA.TABLE2
( ELEMENT CHAR(1),
  PRIMARY KEY (ELEMENT)
);
INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('S');
INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('T');
INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('U');
INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('V');
INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('W');

Note:: Qui "DHK_SCHEMA" รจ un nome di schema, l'utente puรฒ modificare il nome dello schema SQL di conseguenza.

Impostato OperaTor Gli esempi sono i seguenti

Operator Query SQL Uscita si utilizza
UNION SELEZIONA *
DA
(
SELEZIONA ELEMENT
DA DHK_SCHEMA.TABLE1
UNION
SELEZIONA ELEMENT
DA DHK_SCHEMA.TABLE2
)
ORDINATO DA ELEMENTO;

OPERATORE UNION set output

Combina il risultato di due o piรน query senza duplicati.
UNIONE TUTTI SELEZIONA *
DA
(
SELEZIONA ELEMENT
DA DHK_SCHEMA.TABLE1
UNIONE TUTTI
SELEZIONA ELEMENT
DA DHK_SCHEMA.TABLE2
)
ORDINATO DA ELEMENTO;

UNION ALL imposta l'output dell'operatore

Combina il risultato di due o piรน query con tutti i duplicati.
INTERSEZIONE SELEZIONA *
DA
(
SELEZIONA ELEMENT
DA DHK_SCHEMA.TABLE1
INTERSEZIONE
SELEZIONA ELEMENT
DA DHK_SCHEMA.TABLE2
)
ORDINATO DA ELEMENTO;

INTERSECT imposta l'operatore output

Combina il risultato di due o piรน query con tutte le righe comuni.
SALVO SELEZIONA *
DA
(
SELEZIONA ELEMENT
DA DHK_SCHEMA.TABLE1
SALVO
SELEZIONA ELEMENT
DA DHK_SCHEMA.TABLE2
)
ORDINATO DA ELEMENTO;

ECCETTO l'output dell'operatore di impostazione

Prende l'output dalla prima query e rimuove la riga selezionata dalla seconda query

Impostato OperaRegole e requisiti del to

Gli operatori sugli insiemi sembrano semplici, ma rifiutano facilmente le query perchรฉ confrontano interi insiemi di risultati anzichรฉ singoli valori. Sono regolati da quattro principi.

  1. Il numero di colonne deve corrispondere. Entrambe le istruzioni SELECT devono restituire lo stesso numero di colonne. Una mancata corrispondenza causa un errore immediato e il messaggio indica la posizione anzichรฉ la colonna.
  2. I tipi di dati devono essere compatibili. La prima colonna della prima query viene confrontata con la prima colonna della seconda, e cosรฌ via, in base alla posizione, non al nome. I tipi numerici compatibili vengono convertiti automaticamente; una colonna di tipo carattere confrontata con una data non lo รจ.
  3. I nomi delle colonne derivano dalla prima query. Qualunque cosa la seconda istruzione chiami le sue colonne viene ignorata nell'output, cosa che sorprende chiunque legga per la prima volta il risultato di un'operazione UNION.
  4. La clausola ORDER BY si applica all'intero risultato. Va posizionato alla fine, dopo l'ultima istruzione SELECT, ed รจ per questo che gli esempi precedenti racchiudono l'unione in un'istruzione SELECT esterna.

Vale la pena notare la differenza di prestazioni tra UNION e UNION ALL. UNION deve ordinare o applicare un hash al risultato combinato per rimuovere i duplicati, mentre UNION ALL si limita ad aggiungerli. Laddove i duplicati sono impossibili o accettabili, UNION ALL รจ significativamente piรน veloce su tabelle di grandi dimensioni. Le definizioni delle colonne utilizzate in queste tabelle sono trattate in SAP Tipi di dati HANA.

Operaprecedente in tor SAP HANASQL

Quando piรน operatori compaiono in un'espressione, la precedenza determina quale viene valutato per primo. Un errore in questo senso produce una query che viene eseguita correttamente ma restituisce le righe sbagliate, il che รจ molto piรน pericoloso di un errore di sintassi.

Ordine OperaTors Categoria
1 () Parentesi, sempre valutate per prime
2 + โ€“ (operando singolo) Unario piรน e negazione
3 * / Moltiplicazione e divisione
4 + โ€“ || Addizione, subtraczione, concatenazione
5 = != < > <= >= Confronto
6 NON Negazione logica
7 and Congiunzione logica
8 OR Disgiunzione logica

La trappola classica si trova alle righe 7 e 8. Poichรฉ AND lega piรน strettamente di OR, la condizione DOVE regione = 'EST' O regione = 'OVEST' E stato = 'APERTO' si legge come EST, o anche OVEST che รจ aperto. Ogni riga orientale viene restituita indipendentemente dallo stato. L'aggiunta di parentesi attorno ai due test regionali risolve il problema.

Suggerimento: Inserisci tra parentesi ogni condizione mista AND e OR, anche quando la precedenza fornisce giร  il risultato desiderato. In questo modo la query diventa autoesplicativa e resiste a successive modifiche da parte di un altro sviluppatore.

La sintassi delle istruzioni quotidiane รจ trattata nel SAP HANASQL tutorial e la piattaforma piรน ampia nel SAP Tutorial su HANA serie.

DOMANDE FREQUENTI

UNION ALL. Semplicemente aggiunge i risultati, mentre UNION deve anche rimuovere i duplicati. Utilizzare UNION ALL quando i duplicati sono impossibili o accettabili nell'output.

Sรฌ, SAP HANA converte il numero implicitamente. Wrapping Utilizzarlo in TO_VARCHAR รจ comunque una pratica migliore, perchรฉ in questo modo il formato rimane sotto il tuo controllo anzichรฉ essere impostato su quello predefinito della sessione.

Sรฌ. L'IA riformula una condizione mista AND e OR in linguaggio semplice, che rivela immediatamente se il gruppoping individua l'intento, quindi propone le parentesi che lo correggono.

Sรฌ. INTERSECT ed EXCEPT vengono spesso riscritti come un inner join o una clausola NOT EXISTS, che possono offrire prestazioni migliori. Confronta i piani di esecuzione prima di adottare la riscrittura.

Il confronto con NULL restituisce un valore sconosciuto anzichรฉ vero o falso, pertanto la riga viene filtrata. Utilizzare IS NULL e IS NOT NULL al posto dell'operatore di uguaglianza.

Riassumi questo post con: