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.

  • ➕ Unær og binær: En unær operator tar én operand og en binær operator tar to.
  • 🧮 Aritmetikk: Tillegg, subtracmultiplikasjon og divisjon på numeriske operander.
  • 🔗 Strengesammenkobling: To vertikale streker kobler sammen strenger, uttrykk eller konstanter til én enkelt verdi.
  • 🇧🇷 Sammenligning: Lik, større, mindre og kombinasjonene deres returnerer en sannhetsverdi for filtrering.
  • 🔀 Logisk: AND, OR og NOT kombinerer betingelser i en WHERE-klausul.
  • 🧩 Sett Operators: UNION fjerner duplikater, UNION ALL beholder dem, INTERSECT returnerer felles rader, UNNTAK subtracts.
  • 📊 Utarbeidet eksempel: To tabeller som deler verdier demonstrerer de ulike resultatene for hver settoperator.

SAP HANA UNION og UNION ALL-operatører

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.

Sett Operatorer inn SAP HANNA

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;

UNION sett operatorutgang

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;

UNION ALL sett operatørutgang

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;

INTERSECT sett operatorutgang

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;

UNNTAK av angitt operatorutgang

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.

  1. Kolonnetallet må samsvare. Begge SELECT-setningene må returnere samme antall kolonner. En avvikelse feiler umiddelbart, og meldingen navngir posisjonen i stedet for kolonnen.
  2. 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.
  3. 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.
  4. 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.

Spørsmål og svar

UNION ALL. Den legger ganske enkelt til resultatene, mens UNION i tillegg må fjerne duplikater. Bruk UNION ALL når duplikater er umulige eller akseptable i resultatet.

Ja, SAP HANA konverterer tallet implisitt.ping Det er fortsatt bedre å bruke TO_VARCHAR, fordi formatet da forblir under din kontroll i stedet for standardinnstillingen for økten.

Ja. AI gjentar en blandet OG- og ELLER-betingelse i et enkelt språk, noe som umiddelbart avslører om gruppenping samsvarer med intensjonen, og foreslår deretter parentesene som fikser det.

Ja. INTERSECT og EXCEPT omskrives ofte som en indre sammenkobling eller en NOT EXISTS-klausul, noe som kan gi bedre ytelse. Sammenlign utførelsesplaner før du tar i bruk omskrivingen.

Å sammenligne noe med NULL returnerer ukjent i stedet for sant eller usant, så raden filtreres ut. Bruk IS NULL og IS NOT NULL i stedet for equals-operatoren.

Oppsummer dette innlegget med: