SAP HANA Union og Union All: Operator-eksempler
⚡ Smart oppsummering
SAP HANNA Operator utfører beregninger, verdisammenligninger eller tildelinger i SQL. Det finnes seks familier: unære og binære, aritmetiske, streng-, sammenlignings-, logiske og mengdeoperatorer som UNION og INTERSECT.

SAP HANNA Operator kan brukes til beregning, verdisammenligning eller til å tildele verdi.
SAP HANNA Operatorer
- Unær og binær Operator
- Aritmetisk Operator
- String Operatorer
- Sammenligning Operator
- logisk Operator
- Sett Operator
Hver operator returnerer en verdi, og det er derfor de kan nestes inni hverandre. Rekkefølgen de evalueres i er satt av prioritet, forklart etter de enkelte familiene.
Unær og binær Operator
| Operator | Operasjon | Tekniske beskrivelser |
|---|---|---|
| Unær | En unær-operator gjelder for én operand | Unær plussoperator(+) Unær negasjonsoperator(-) Logisk negasjon(IKKE) |
| Binary | En binær Operator gjelder på to operander | Multiplikative operatorer (*, /) Additive operatorer (+,-) Sammenligningsoperatorer (=,!=,<,>,<=,>=) Logiske operatorer (OG, ELLER) |
Aritmetisk Operator
- Tillegg (+)
- Subtracsjon (-)
- Multiplikasjon ( * )
- Divisjon ( / )
String Operator
En streng Operator er en sammenkoblingsoperator som kombinerer to elementer som strenger, uttrykk eller konstanter til ett.
To vertikale streker «||» brukes som sammenkoblingsoperatør.
Sammenligning Operator
Sammenligningsoperator brukes til å sammenligne to operander. Nedenfor er en liste over sammenligninger Operator-
- Lik ( = )
- Større enn ( > )
- Less Enn (<)
- Større enn eller lik ( >= )
- Less enn eller lik (<=)
- Ikke lik (!= , <> )
logisk Operator
Logisk operator brukes i søkekriterier.
F.eks. HVOR tilstand1 OG / ELLER / IKKE tilstand2
Nedenfor er en liste over logiske operatorer -
- OG – (f.eks. HVOR betingelse1 OG betingelse2)
Hvis både Condition1 OG Condition2 er sanne, er Kombiner-betingelsen sann, ellers vil den være usann. - ELLER – (f.eks. HVOR betingelse1 ELLER betingelse2)
Hvis betingelse1 ELLER betingelse2 er sann, er kombineringsbetingelsen sann eller usann hvis begge betingelsene er usann. - IKKE – (f.eks. HVOR IKKE-betingelse)
NOT-betingelsen er sann Hvis betingelsen er usann.
Sett Operatorer
- UNION – Kombinerer to eller mange select-setninger eller spørringer uten duplikat.
- UNION ALL – Kombinerer to eller mange SELECT-setninger eller spørringer, inkludert alle dupliserte rader.
- INTERSECT – Kombinerer to eller mange SELECT-setninger eller -spørringer, og returnerer alle felles rader.
- UNNTAK – Tar utdataene fra den første spørringen og fjerner raden som er valgt av den andre spørringen.
Eg Jeg har to tabeller (tabell1, tabell2) der noen verdier er vanlige.
Vi bruker Set-operator (Union, Union ALL, Intersect, unntatt) for disse to tabellene i SQL som nedenfor -
Lag 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');
Lag 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');
Merknader: Her er "DHK_SCHEMA" et skjemanavn, brukeren kan endre skjemanavn i SQL tilsvarende.
Sett OperaEksempler er som nedenfor
| Operator | SQL Query | Produksjon | Bruker |
|---|---|---|---|
| UNION | VELG * FRA ( VELG ELEMENT FRA DHK_SCHEMA.TABLE1 UNION VELG ELEMENT FRA DHK_SCHEMA.TABLE2 ) REKKEFØLGE ETTER ELEMENT; |
Kombiner Resultat av to eller flere spørringer uten duplikat. | |
| UNION ALLE | VELG * FRA ( VELG ELEMENT FRA DHK_SCHEMA.TABLE1 UNION ALLE VELG ELEMENT FRA DHK_SCHEMA.TABLE2 ) REKKEFØLGE ETTER ELEMENT; |
Kombiner resultatet av to eller flere spørringer med alle duplikater. | |
| KRYSSE | VELG * FRA ( VELG ELEMENT FRA DHK_SCHEMA.TABLE1 KRYSSE VELG ELEMENT FRA DHK_SCHEMA.TABLE2 ) REKKEFØLGE ETTER ELEMENT; |
Kombiner resultatet av to eller flere spørringer med alle vanlige rader. | |
| UNNTATT | VELG * FRA ( VELG ELEMENT FRA DHK_SCHEMA.TABLE1 UNNTATT VELG ELEMENT FRA DHK_SCHEMA.TABLE2 ) REKKEFØLGE ETTER ELEMENT; |
Tar utdata fra første spørring og fjerner rad valgt av den andre spørringen |
Sett Operator-regler og krav
Mengdeoperatorer ser enkle ut, men avviser spørringer lett, fordi de sammenligner hele resultatsett i stedet for individuelle verdier. Fire regler styrer dem.
- Kolonnetallet må samsvare. Begge SELECT-setningene må returnere samme antall kolonner. En avvikelse feiler umiddelbart, og meldingen navngir posisjonen i stedet for kolonnen.
- Datatypene må være kompatible. Kolonne én i den første spørringen matches mot kolonne én i den andre, og så videre etter posisjon, ikke etter navn. Kompatible numeriske typer konverteres automatisk; en tegnkolonne mot en dato blir ikke det.
- Kolonnenavnene kommer fra den første spørringen. Uansett hva den andre setningen kaller kolonnene sine, ignoreres det i utdataene, noe som overrasker alle som leser resultatet av en UNION for første gang.
- ORDER BY gjelder for hele resultatet. Den hører hjemme på slutten, etter den siste SELECT-en, og det er derfor eksemplene ovenfor pakker foreningen inn i en ytre SELECT.
Ytelsesforskjellen mellom UNION og UNION ALL er verdt å merke seg. UNION må sortere eller hashe det kombinerte resultatet for å fjerne duplikater, mens UNION ALL bare legger til. Der duplikater er umulige eller akseptable, er UNION ALL betydelig raskere på store tabeller. Kolonnedefinisjonene som brukes i disse tabellene er dekket i SAP HANA-datatyper.
Operator Precedens i SAP HANA SQL
Når flere operatorer forekommer i ett uttrykk, avgjør prioritet hvilken som evalueres først. Hvis dette gjøres feil, produseres en spørring som kjører perfekt og returnerer feil rader, noe som er langt farligere enn en syntaksfeil.
| Orden | Operatorer | Kategori |
|---|---|---|
| 1 | () | Parenteser, alltid evaluert først |
| 2 | + – (enkeltoperand) | Unær pluss og negasjon |
| 3 | * / | Multiplikasjon og deling |
| 4 | + – || | Tillegg, subtracsjon, sammenkobling |
| 5 | = != < > <= >= | Sammenligning |
| 6 | IKKE | Logisk negasjon |
| 7 | OG | Logisk konjunksjon |
| 8 | OR | Logisk disjunksjon |
Den klassiske fellen sitter på rad 7 og 8. Fordi AND binder seg tettere enn OR, er betingelsen HVOR region = 'ØST' ELLER region = 'VEST' OG status = 'ÅPEN' leses som ØST, eller VEST som er åpenHver østlige rad returneres uavhengig av status. Å legge til parenteser rundt de to regiontestene fikser dette.
💡 Tips: Skriv parenteser rundt alle blandede OG- og ELLER-betingelser, selv når prioritet allerede gir det tiltenkte resultatet. Spørringen blir selvdokumenterende og overlever senere redigeringer av en annen utvikler.
Daglig setningssyntaks dekkes i SAP HANA SQL veiledningen og den bredere plattformen i SAP HANA-opplæring serien.





