SAP HANA Union & Union All: Operator Voorbeelden

⚡ Slimme samenvatting

SAP HANA OperaTor voert berekeningen, waardevergelijkingen of toewijzingen uit binnen SQL. Er bestaan ​​zes families: unaire en binaire, rekenkundige, tekenreeks-, vergelijkings-, logische en setoperatoren zoals UNION en INTERSECT.

  • ➕ Unair en binair: Een unaire operator heeft één operand en een binaire operator heeft er twee.
  • 🧮 Rekenkundig: Optellen, aftrekkentracBij bewerkingen zoals delen, vermenigvuldigen en deling wordt gewerkt met numerieke operanden.
  • 🔗 String aaneenschakeling: Twee verticale strepen verbinden tekenreeksen, uitdrukkingen of constanten tot één enkele waarde.
  • ​ Vergelijking: Gelijk aan, groter dan, kleiner dan en combinaties daarvan leveren een waarheidswaarde op voor filtering.
  • 🔀 Logisch: AND, OR en NOT combineren voorwaarden binnen een WHERE-clausule.
  • 🧩 Set OperaTorens: UNION verwijdert duplicaten, UNION ALL behoudt ze, INTERSECT retourneert gemeenschappelijke rijen, BEHALVE subtracts.
  • 📊 Uitgewerkt voorbeeld: Twee tabellen met gedeelde waarden demonstreren de verschillende uitvoer van elke set-operator.

SAP HANA UNION en UNION ALL operators

SAP HANA Operator kan worden gebruikt voor berekeningen, waardevergelijkingen of het toekennen van waarde.

SAP HANA Operaverdraaid

  • Unair en binair Operator
  • Rekenkunde Operator
  • Draad Operaverdraaid
  • Vergelijk Operator
  • logisch Operator
  • Set Operator

Elke operator retourneert een waarde, daarom kunnen ze in elkaar genest worden. De volgorde waarin ze worden geëvalueerd, wordt bepaald door prioriteit, die na de afzonderlijke families wordt uitgelegd.

Unair en binair Operator

Operator Werking Beschrijving
unaire Een unaire operator is van toepassing op één operand Unaire plusoperator (+) Unaire negatieoperator (-) Logische negatie (NIET)
binair Een binair getal Operator is van toepassing op twee operanden Vermenigvuldigingsoperatoren ( *, / ) Opteloperatoren ( +,- ) Vergelijkingsoperatoren ( =,!=,<,>,<=,>=) Logische operatoren ( EN, OF )

Rekenkunde Operator

  • Toevoeging (+)
  • Subtractie (-)
  • Vermenigvuldiging (*)
  • Divisie ( / )

Draad Operator

Een draad Operator is een samenvoegingsoperator die twee items, zoals strings, expressies of constanten, combineert tot één item.

Twee verticale balken “||” worden gebruikt als samenvoegingsoperator.

Vergelijk Operator

Vergelijkingsoperator wordt gebruikt om twee operanden te vergelijken. Hieronder vindt u een lijst met vergelijkingsoperatoren. Operator-

  • Gelijk aan ( = )
  • Groter dan ( > )
  • Less Dan (<)
  • Groter dan of gelijk aan ( >= )
  • Less kleiner dan of gelijk aan ( <= )
  • Niet gelijk (!= , <> )

logisch Operator

De logische operator wordt gebruikt in zoekcriteria.

Bijvoorbeeld WHERE voorwaarde1 EN / OF / NIET voorwaarde2

Hieronder vindt u een lijst met logische operatoren:

  • EN – (bijv. WAAR voorwaarde1 EN voorwaarde2)
    Als zowel Voorwaarde1 EN Voorwaarde2 waar zijn, dan is de Combine-voorwaarde waar, anders is deze onwaar.
  • OF – (bijv. WAAR voorwaarde1 OF voorwaarde2)
    Als Voorwaarde1 OF Voorwaarde2 waar is, is de gecombineerde voorwaarde waar of onwaar als beide voorwaarden onwaar zijn.
  • NIET – (bijv. WAAR NIET-voorwaarde)
    De NIET-voorwaarde is waar Als de voorwaarde onwaar is.

Set Operaverdraaid

  • UNION – Combineert twee of meer SELECT-instructies of query's zonder duplicaten.
  • UNION ALL – Combineert twee of meer SELECT-instructies of query's, inclusief alle dubbele rijen.
  • INTERSECT – Combineert twee of meer SELECT-instructies of query's en retourneert alle gemeenschappelijke rijen.
  • UITZONDERING – Neemt de uitvoer van de eerste query en verwijdert de rij die door de tweede query is geselecteerd.

bv Ik heb twee tabellen (tabel1, tabel2) waarin sommige waarden gebruikelijk zijn.

Set Operatoorts in SAP HANA

We gebruiken de Set-operator (Union, Union ALL, Intersect, except) voor deze twee tabellen in SQL zoals hieronder -

Maak 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');

Maak 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');

Note: Hier is “DHK_SCHEMA” een schemanaam, waarin de gebruiker de schemanaam kan wijzigen SQL overeenkomstig.

Set OperaVoorbeelden zijn hieronder

Operator SQL-query uitgang u gebruikt
UNION SELECT *
NU
(
SELECT ELEMENT
NU DHK_SCHEMA.TABLE1
UNION
SELECT ELEMENT
NU DHK_SCHEMA.TABLE2
)
BESTELLING DOOR ELEMENT;

Uitvoer van de UNION-set-operator

Combineer het resultaat van twee of meer zoekopdrachten zonder duplicaat.
UNIE ALLEN SELECT *
NU
(
SELECT ELEMENT
NU DHK_SCHEMA.TABLE1
UNIE ALLEN
SELECT ELEMENT
NU DHK_SCHEMA.TABLE2
)
BESTELLING DOOR ELEMENT;

UNION ALL stelt de uitvoer van de operator in

Combineer het resultaat van twee of meer zoekopdrachten met allemaal dubbele.
SNIJDEN SELECT *
NU
(
SELECT ELEMENT
NU DHK_SCHEMA.TABLE1
SNIJDEN
SELECT ELEMENT
NU DHK_SCHEMA.TABLE2
)
BESTELLING DOOR ELEMENT;

INTERSECT set operator output

Combineer het resultaat van twee of meer zoekopdrachten met alle algemene rijen.
BEHALVE SELECT *
NU
(
SELECT ELEMENT
NU DHK_SCHEMA.TABLE1
BEHALVE
SELECT ELEMENT
NU DHK_SCHEMA.TABLE2
)
BESTELLING DOOR ELEMENT;

UITZONDERING van de uitvoer van de set-operator

Neemt de uitvoer van de eerste query en verwijdert de rij die door de tweede query is geselecteerd

Set OperaRegels en vereisten

Setoperatoren lijken eenvoudig, maar wijzen query's vaak af omdat ze hele resultaatsets vergelijken in plaats van individuele waarden. Vier regels zijn van toepassing.

  1. Het aantal kolommen moet overeenkomen. Beide SELECT-instructies moeten hetzelfde aantal kolommen retourneren. Bij een verschil wordt direct een foutmelding weergegeven, waarbij de positie in plaats van de kolom wordt genoemd.
  2. De gegevenstypen moeten compatibel zijn. De eerste kolom van de eerste query wordt vergeleken met de eerste kolom van de tweede, enzovoort, op basis van positie, niet op naam. Compatibele numerieke gegevenstypen worden automatisch geconverteerd; een kolom met tekens wordt niet automatisch vergeleken met een datumkolom.
  3. De kolomnamen zijn afkomstig uit de eerste query. De benaming van de kolommen in de tweede instructie wordt in de uitvoer genegeerd, wat verrassend is voor iedereen die voor het eerst het resultaat van een UNION-bewerking leest.
  4. ORDER BY is van toepassing op het gehele resultaat. Het hoort aan het einde te staan, na de laatste SELECT, en daarom worden de union-statements in de bovenstaande voorbeelden in een buitenste SELECT-statement geplaatst.

Het prestatieverschil tussen UNION en UNION ALL is het vermelden waard. UNION moet het gecombineerde resultaat sorteren of hashen om duplicaten te verwijderen, terwijl UNION ALL de kolommen eenvoudigweg samenvoegt. Waar duplicaten onmogelijk of acceptabel zijn, is UNION ALL aanzienlijk sneller bij grote tabellen. De kolomdefinities die in deze tabellen worden gebruikt, worden behandeld in SAP HANA-gegevenstypen.

Operator Voorrang in SAP HANA-SQL

Wanneer meerdere operatoren in één expressie voorkomen, bepaalt de prioriteit welke als eerste wordt geëvalueerd. Een fout hierin leidt tot een query die perfect werkt, maar de verkeerde rijen retourneert, wat veel gevaarlijker is dan een syntaxfout.

Bestel Operaverdraaid Categorie
1 () Haakjes worden altijd eerst geëvalueerd.
2 + – (enkele operand) Unaire plus en negatie
3 * / Vermenigvuldiging en deling
4 + – || Optellen, aftrekkentractie, concatenatie
5 = != < > <= >= Vergelijk
6 NIET Logische negatie
7 EN Logische conjunctie
8 OR Logische ontkoppeling

De klassieke valkuil bevindt zich op rij 7 en 8. Omdat EN sterker bindt dan OF, geldt de voorwaarde. WAAR regio = 'OOST' OF regio = 'WEST' EN status = 'OPEN' wordt gelezen als OOST, of anders WEST, dat is open.Elke oostelijke rij wordt geretourneerd, ongeacht de status. Door haakjes rond de twee regio-tests te plaatsen, wordt dit opgelost.

💡Tip: Plaats haakjes rond elke gemengde AND- en OR-voorwaarde, zelfs als de prioriteit al het beoogde resultaat oplevert. De query wordt zo zelfdocumenterend en blijft behouden bij latere bewerkingen door een andere ontwikkelaar.

De syntaxis van alledaagse statements wordt behandeld in de SAP HANA-SQL handleiding, en het bredere platform in de SAP HANA-handleiding series.

Veelgestelde vragen

UNION ALL. Deze functie voegt de resultaten samen, terwijl UNION daarnaast ook duplicaten moet verwijderen. Gebruik UNION ALL wanneer duplicaten in de uitvoer onmogelijk of acceptabel zijn.

Ja, SAP HANA converteert het getal impliciet. Wrapping Het gebruik van TO_VARCHAR blijft echter de beste werkwijze, omdat het formaat dan onder uw controle blijft in plaats van de standaardinstelling van de sessie.

Ja. AI herformuleert een gemengde EN- en OF-voorwaarde in begrijpelijke taal, waardoor direct duidelijk wordt of de groepping Het komt overeen met de bedoeling en stelt vervolgens de haakjes voor die het probleem oplossen.

Ja. INTERSECT en EXCEPT worden vaak herschreven als een inner join of een NOT EXISTS-clausule, wat betere prestaties kan opleveren. Vergelijk de uitvoeringsplannen voordat u de herschrijving toepast.

Als je iets vergelijkt met NULL, krijg je 'onbekend' in plaats van 'waar' of 'onwaar', waardoor de rij wordt gefilterd. Gebruik IS NULL en IS NOT NULL in plaats van de gelijkheidsoperator.

Vat dit bericht samen met: