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.

  • โž• Unรฆr og binรฆr: En unรฆr operator tager รฉn operand, og en binรฆr operator tager to.
  • ๐Ÿงฎ Aritmetik: Tilfรธjelse, underordnettracmultiplikations-, multiplikations- og divisionsarbejde pรฅ numeriske operander.
  • ๐Ÿ”— Strengsammenkรฆdning: To lodrette bjรฆlker forbinder strenge, udtryk eller konstanter til รฉn vรฆrdi.
  • โš–๏ธ Sammenligning: Lig med, stรธrre, mindre og deres kombinationer returnerer en sandhedsvรฆrdi til filtrering.
  • ๐Ÿ”€ Logisk: AND, OR og NOT kombinerer betingelser i en WHERE-klausul.
  • ๐Ÿงฉ sรฆt Operators: UNION fjerner dubletter, UNION ALL beholder dem, INTERSECT returnerer fรฆlles rรฆkker, UNDTAGEN subtracts.
  • ๐Ÿ“Š Udarbejdet eksempel: To tabeller, der deler vรฆrdier, demonstrerer det forskellige output for hver sรฆtoperator.

SAP HANA UNION og UNION ALL operatรธrer

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.

sรฆt Operatorer ind SAP HANA

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;

UNION sรฆt operator output

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;

UNION ALL sรฆt operatรธrudgang

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;

INTERSECT-sรฆt operatoroutput

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;

UNDTAGEN indstillet operatoroutput

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Ofte Stillede Spรธrgsmรฅl

UNION ALL. Den tilfรธjer blot resultaterne, mens UNION desuden skal fjerne dubletter. Brug UNION ALL, nรฅr dubletter er umulige eller acceptable i outputtet.

Ja, SAP HANA konverterer tallet implicit.ping Det er stadig bedre at bruge det i TO_VARCHAR, fordi formatet sรฅ forbliver under din kontrol i stedet for sessionens standard.

Ja. AI gentager en blandet AND- og ELLER-betingelse i et letforstรฅeligt sprog, hvilket straks afslรธrer, om gruppenping matcher intentionen og foreslรฅr derefter parenteserne, der retter den.

Ja. INTERSECT og EXCEPT omskrives ofte som en inner join eller en NOT EXISTS-klausul, hvilket kan fungere bedre. Sammenlign udfรธrelsesplaner, fรธr du implementerer omskrivningen.

Sammenligning af noget med NULL returnerer ukendt i stedet for sand eller falsk, sรฅ rรฆkken filtreres fra. Brug IS NULL og IS NOT NULL i stedet for equals-operatoren.

Opsummer dette indlรฆg med: