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.

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.
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; |
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; |
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; |
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; |
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.
- 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.
- 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.
- 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.
- 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.





