SAP HANA Union & Union Alle: Operator-eksempler
โก Smart opsummering
SAP HANA Operator udfรธrer beregninger, vรฆrdisammenligninger eller tildelinger i SQL. Der findes seks familier: unรฆre og binรฆre, aritmetiske, streng-, sammenlignings-, logiske og sรฆtoperatorer sรฅsom UNION og INTERSECT.

SAP HANA Operator kan bruges til beregning, vรฆrdisammenligning eller til at tildele vรฆrdi.
SAP HANA Operatorer
- Unรฆr og binรฆr OperaTor
- Aritmetik OperaTor
- String Operatorer
- Sammenligning OperaTor
- Logisk OperaTor
- sรฆt OperaTor
Hver operator returnerer en vรฆrdi, hvilket er grunden til, at de kan indlejres i hinanden. Rรฆkkefรธlgen, de evalueres i, er bestemt af prรฆference, hvilket forklares efter de enkelte familier.
Unรฆr og binรฆr OperaTor
| OperaTor | Produktion | Beskrivelse |
|---|---|---|
| Unรฆr | En unรฆr operator gรฆlder for รฉn operand | Unรฆr plusoperator(+) Unรฆr negationsoperator(-) Logisk negation(NOT) |
| Binary | En binรฆr Operator gรฆlder pรฅ to operander | Multiplikative operatorer (*, /) Additive operatorer (+,-) Sammenligningsoperatorer (=,!=,<,>,<=,>=) Logiske operatorer (OG, ELLER) |
Aritmetik OperaTor
- Tilfรธjelse (+)
- Undertraction (-)
- Multiplikation ( * )
- Division ( / )
String OperaTor
En streng Operator er en sammenkรฆdningsoperator, der kombinerer to elementer sรฅsom strenge, udtryk eller konstanter til รฉn.
To lodrette streger "||" bruges som sammenkรฆdningsoperator.
Sammenligning OperaTor
Sammenligningsoperator bruges til at sammenligne to operander. Nedenfor er en liste over sammenligninger Operator-
- Lig med ( = )
- Stรธrre end ( > )
- Less end (<)
- Stรธrre end eller lig med ( >= )
- Less end eller lig med (<=)
- Ikke ens (!= , <> )
Logisk OperaTor
Logisk operator bruges i sรธgekriterier.
Fx HVOR betingelse1 OG / ELLER / IKKE betingelse2
Nedenfor er en liste over logiske operatorer -
- OG โ (f.eks. HVOR betingelse1 OG betingelse2)
Hvis bรฅde Betingelse1 OG Betingelse2 er sande, er Kombiner-betingelsen sand, ellers vil den vรฆre falsk. - ELLER โ (f.eks. HVOR betingelse1 ELLER betingelse2)
Hvis Betingelse1 ELLER Betingelse2 er sand, sรฅ er kombinationsbetingelsen sand eller falsk, hvis begge Betingelser er falske. - IKKE โ (f.eks. HVOR IKKE-betingelse)
NOT-betingelsen er sand, hvis betingelsen er falsk.
sรฆt Operatorer
- UNION โ Kombinerer to eller mange select-sรฆtninger eller forespรธrgsler uden duplikering.
- UNION ALL โ Kombinerer to eller mange select-sรฆtninger eller forespรธrgsler, inklusive alle dublerede rรฆkker.
- INTERSECT โ Kombinerer to eller mange SELECT-sรฆtninger eller forespรธrgsler og returnerer alle fรฆlles rรฆkker.
- UNDTAGEN โ Tager outputtet fra den fรธrste forespรธrgsel og fjerner den rรฆkke, der er valgt af den anden forespรธrgsel.
F.eks Jeg har to tabeller (tabel1, tabel2), hvor nogle vรฆrdier er fรฆlles.
Vi bruger Set-operator (Union, Union ALL, Intersect, undtagen) til disse to tabeller i SQL som nedenfor -
Opret tabel1- SQL-script
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');
Opret tabel2- SQL-script
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');
Bemรฆrk: Her er โDHK_SCHEMAโ et skemanavn, brugeren kan รฆndre skemanavnet i SQL derfor.
sรฆt OperaEksempler er som nedenfor
| OperaTor | SQL-forespรธrgsel | Produktion | Du bruger |
|---|---|---|---|
| UNION | SELECT * FRA ( SELECT ELEMENT FRA DHK_SCHEMA.TABEL1 UNION SELECT ELEMENT FRA DHK_SCHEMA.TABEL2 ) BESTIL BY ELEMENT; |
Kombiner resultat af to eller flere forespรธrgsler uden duplikat. | |
| UNION ALLE | SELECT * FRA ( SELECT ELEMENT FRA DHK_SCHEMA.TABEL1 UNION ALLE SELECT ELEMENT FRA DHK_SCHEMA.TABEL2 ) BESTIL BY ELEMENT; |
Kombiner resultatet af to eller flere forespรธrgsler med alle duplikater. | |
| KRYDSE | SELECT * FRA ( SELECT ELEMENT FRA DHK_SCHEMA.TABEL1 KRYDSE SELECT ELEMENT FRA DHK_SCHEMA.TABEL2 ) BESTIL BY ELEMENT; |
Kombiner resultatet af to eller flere forespรธrgsler med alle almindelige rรฆkker. | |
| UNDTAGEN | SELECT * FRA ( SELECT ELEMENT FRA DHK_SCHEMA.TABEL1 UNDTAGEN SELECT ELEMENT FRA DHK_SCHEMA.TABEL2 ) BESTIL BY ELEMENT; |
Tager output fra fรธrste forespรธrgsel og fjerner rรฆkke valgt af den anden forespรธrgsel |
sรฆt Operator Regler og Krav
Sรฆtoperatorer ser simple ud, men afviser let forespรธrgsler, fordi de sammenligner hele resultatsรฆt i stedet for individuelle vรฆrdier. Fire regler styrer dem.
- Kolonnetallet skal stemme overens. Begge SELECT-sรฆtninger skal returnere det samme antal kolonner. En uoverensstemmelse fejler รธjeblikkeligt, og meddelelsen navngiver positionen i stedet for kolonnen.
- Datatyper skal vรฆre kompatible. Kolonne et i den fรธrste forespรธrgsel matches med kolonne et i den anden, og sรฅ videre efter position, ikke efter navn. Kompatible numeriske typer konverteres automatisk; en tegnkolonne mod en dato matches ikke.
- Kolonnenavnene kommer fra den fรธrste forespรธrgsel. Uanset hvad den anden sรฆtning kalder sine kolonner, ignoreres det i outputtet, hvilket overrasker alle, der lรฆser resultatet af en UNION for fรธrste gang.
- ORDER BY gรฆlder for hele resultatet. Den hรธrer hjemme i slutningen, efter den sidste SELECT, og det er derfor, eksemplerne ovenfor omslutter foreningen i en ydre SELECT.
Forskellen i ydeevne mellem UNION og UNION ALL er vรฆrd at bemรฆrke. UNION skal sortere eller hashe det kombinerede resultat for at fjerne dubletter, mens UNION ALL blot tilfรธjer. Hvor dubletter er umulige eller acceptable, er UNION ALL betydeligt hurtigere pรฅ store tabeller. Kolonnedefinitionerne, der bruges i disse tabeller, er dรฆkket i SAP HANA-datatyper.
Operator-prรฆcedens i SAP HANA SQL
Nรฅr flere operatorer forekommer i รฉt udtryk, afgรธr prรฆcedens, hvilken der evalueres fรธrst. Hvis dette gรธres forkert, kรธrer forespรธrgslen perfekt og returnerer de forkerte rรฆkker, hvilket er langt farligere end en syntaksfejl.
| Bestil | Operatorer | Kategori |
|---|---|---|
| 1 | () | Parenteser, altid evalueret fรธrst |
| 2 | + โ (enkelt operand) | Unรฆr plus og negation |
| 3 | * / | Multiplikation og opdeling |
| 4 | + โ || | Tilfรธjelse, underordnettraction, sammenkรฆdning |
| 5 | = != < > <= >= | Sammenligning |
| 6 | IKKE | Logisk negation |
| 7 | AND | Logisk konjunktion |
| 8 | OR | Logisk adskillelse |
Den klassiske trap sidder i rรฆkke 7 og 8. Fordi AND binder tรฆttere end OR, er betingelsen HVOR region = 'รST' ELLER region = 'VEST' OG status = 'ร BEN' lรฆses som รST, eller VEST, der er รฅbenHver รธstlig rรฆkke returneres uanset status. Tilfรธjelse af parenteser omkring de to regiontests lรธser problemet.
๐ก Tip: Skriv parenteser omkring alle blandede AND- og ELLER-betingelser, selv nรฅr prรฆcedens allerede giver det tilsigtede resultat. Forespรธrgslen bliver selvdokumenterende og overlever senere redigeringer foretaget af en anden udvikler.
Daglig udsagnssyntaks er dรฆkket i SAP HANA SQL tutorial og den bredere platform i SAP HANA-vejledning serien.





