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.

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.
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; |
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; |
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; |
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; |
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.
- 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.
- 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 รจ.
- 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.
- 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.





