SAP HANA Union & Union All: Operator-exempel
⚡ Smart sammanfattning
SAP HANA Operator utför beräkningar, värdejämförelser eller tilldelningar i SQL. Det finns sex familjer: unära och binära, aritmetiska, sträng-, jämförelse-, logiska och mängdoperatorer som UNION och INTERSECT.

SAP HANA Operator kan användas för beräkning, värdejämförelse eller för att tilldela värde.
SAP HANA Operatorer
- Unär och binär Operator
- Aritmetik Operator
- Sträng Operatorer
- Jämförelse Operator
- logisk Operator
- uppsättning Operator
Varje operator returnerar ett värde, vilket är anledningen till att de kan kapslas inuti varandra. Ordningen i vilken de utvärderas bestäms av prioritet, vilket förklaras efter de enskilda familjerna.
Unär och binär Operator
| Operator | Operation | BESKRIVNING |
|---|---|---|
| unär | En unäroperator gäller för en operand | Unär plusoperator(+) Unär negationsoperator(-) Logisk negation(NOT) |
| Binary | En binär Operator gäller på två operander | Multiplikativa operatorer (*, /) Additiva operatorer (+,-) Jämförelseoperatorer (=,!=,<,>,<=,>=) Logiska operatorer (OCH, ELLER) |
Aritmetik Operator
- Tillägg (+)
- Subtraction (-)
- Multiplikation ( * )
- Division ( / )
Sträng Operator
En sträng Operator är en sammanlänkningsoperator som kombinerar två objekt som strängar, uttryck eller konstanter till en.
Två vertikala streck "||" används som sammanlänkningsoperator.
Jämförelse Operator
Jämförelseoperator används för att jämföra två operander. Nedan finns en lista över jämförelser Operator-
- Lika med ( = )
- Större än ( > )
- Less Än (<)
- Större än eller lika med ( >= )
- Less än eller lika med (<=)
- Inte lika (!= , <> )
logisk Operator
Logisk operator används i sökkriterier.
T.ex. WHERE condition1 OCH / ELLER / NOT condition2
Nedan finns en lista över logiska operatorer -
- OCH – (t.ex. DÄR villkor1 OCH villkor2)
Om både Villkor1 OCH Villkor2 är sanna, är Kombinera-villkoret sant, annars blir det falskt. - ELLER – (t.ex. VAR villkor1 ELLER villkor2)
Om villkor1 ELLER villkor2 är sant, är kombinera villkor sant eller falskt om båda villkoren är falska. - INTE – (t.ex. VAR INTE-villkor)
INTE villkoret är sant Om villkoret är falskt.
uppsättning Operatorer
- UNION – Kombinerar två eller många SELECT-satser eller frågor utan dubblett.
- UNION ALL – Kombinerar två eller många SELECT-satser eller frågor, inklusive alla dubbletter av rader.
- INTERSECT – Kombinerar två eller många SELECT-satser eller frågor och returnerar alla gemensamma rader.
- EXCEPT – Hämtar utdata från den första frågan och tar bort raden som markerats av den andra frågan.
T.ex Jag har två tabeller (tabell1, tabell2) där vissa värden är vanliga.
Vi använder Set-operator (Union, Union ALL, Intersect, utom) för dessa två tabeller in SQL som nedan -
Skapa tabell 1- SQL-skript
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');
Skapa tabell 2- SQL-skript
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');
Anmärkningar: Här är "DHK_SCHEMA" ett schemanamn, användaren kan ändra schemanamnet i SQL följaktligen.
uppsättning OperaExempel är enligt nedan
| Operator | SQL-fråga | Produktion | du använder |
|---|---|---|---|
| UNION | VÄLJA * FRÅN ( VÄLJA ELEMENT FRÅN DHK_SCHEMA.TABLE1 UNION VÄLJA ELEMENT FRÅN DHK_SCHEMA.TABLE2 ) SORTERA EFTER ELEMENT; |
Kombinera Resultat av två eller flera frågor utan dubblett. | |
| UNION ALLA | VÄLJA * FRÅN ( VÄLJA ELEMENT FRÅN DHK_SCHEMA.TABLE1 UNION ALLA VÄLJA ELEMENT FRÅN DHK_SCHEMA.TABLE2 ) SORTERA EFTER ELEMENT; |
Kombinera resultatet av två eller flera frågor med alla dubbletter. | |
| KORSAS | VÄLJA * FRÅN ( VÄLJA ELEMENT FRÅN DHK_SCHEMA.TABLE1 KORSAS VÄLJA ELEMENT FRÅN DHK_SCHEMA.TABLE2 ) SORTERA EFTER ELEMENT; |
Kombinera Resultat av två eller flera frågor med alla vanliga rader. | |
| BORTSETT FRÅN | VÄLJA * FRÅN ( VÄLJA ELEMENT FRÅN DHK_SCHEMA.TABLE1 BORTSETT FRÅN VÄLJA ELEMENT FRÅN DHK_SCHEMA.TABLE2 ) SORTERA EFTER ELEMENT; |
Tar utdata från den första frågan och tar bort rad vald av den andra frågan |
uppsättning Operator-regler och krav
Mängdoperatorer ser enkla ut men avvisar frågor lätt, eftersom de jämför hela resultatmängder snarare än enskilda värden. Fyra regler styr dem.
- Kolumnantalet måste matcha. Båda SELECT-satserna måste returnera samma antal kolumner. En avvikelse misslyckas omedelbart och meddelandet namnger positionen istället för kolumnen.
- Datatyper måste vara kompatibla. Kolumn ett i den första frågan matchas mot kolumn ett i den andra, och så vidare efter position, inte efter namn. Kompatibla numeriska typer konverteras automatiskt; en teckenkolumn mot ett datum görs inte.
- Kolumnnamnen kommer från den första frågan. Vad den andra satsen än kallar sina kolumner ignoreras i utdata, vilket förvånar alla som läser resultatet av en UNION för första gången.
- ORDER BY gäller för hela resultatet. Den hör hemma i slutet, efter den sista SELECT-koden, och det är därför exemplen ovan omsluter unionen i en yttre SELECT.
Prestandaskillnaden mellan UNION och UNION ALL är värd att notera. UNION måste sortera eller hasha det kombinerade resultatet för att ta bort dubbletter, medan UNION ALL bara lägger till. Där dubbletter är omöjliga eller acceptabla är UNION ALL betydligt snabbare på stora tabeller. Kolumndefinitionerna som används i dessa tabeller behandlas i SAP HANA-datatyper.
Operator Precedens i SAP HANA SQL
När flera operatorer förekommer i ett uttryck avgör prioritet vilken som utvärderas först. Om detta görs fel produceras en fråga som körs perfekt och returnerar fel rader, vilket är mycket farligare än ett syntaxfel.
| Ordersammanställning | Operatorer | Kategori |
|---|---|---|
| 1 | () | Parenteser, alltid utvärderade först |
| 2 | + – (enkel operand) | Unär plus och negation |
| 3 | * / | Multiplikation och uppdelning |
| 4 | + – || | Tillägg, subtraction, sammankoppling |
| 5 | = != < > <= >= | Jämförelse |
| 6 | INTE | Logisk negation |
| 7 | AND | Logisk konjunktion |
| 8 | OR | Logisk disjunktion |
Den klassiska fällan sitter på rad 7 och 8. Eftersom OCH binder hårdare än ELLER, är villkoret DÄR region = 'ÖST' ELLER region = 'VÄST' OCH status = 'ÖPPEN' läses som ÖST, eller VÄST som är öppenVarje östra rad returneras oavsett status. Att lägga till parenteser runt de två regiontesterna åtgärdar det.
💡 Tips: Skriv parenteser runt varje blandat OCH- och ELLER-villkor även när prioritet redan ger det avsedda resultatet. Frågan blir självdokumenterande och klarar senare redigeringar av en annan utvecklare.
Daglig satssyntax behandlas i SAP HANA SQL handledning och den bredare plattformen i SAP HANA-handledning serien.





