SAP HANA-liitto ja kaikki liitto: Operaesimerkkejä

⚡ Älykäs yhteenveto

SAP HANA Operator suorittaa laskutoimituksia, arvojen vertailuja tai sijoituksia SQL:n sisällä. On olemassa kuusi operaattoriperhettä: unaari- ja binäärioperaattorit, aritmeettiset operaattorit, merkkijonooperaattorit, vertailuoperaattorit, loogiset operaattorit ja joukko-operaattorit, kuten UNION ja INTERSECT.

  • Unaarinen ja binäärinen: Unaarinen operaattori ottaa yhden operandin ja binäärinen kaksi.
  • 🧮 Aritmeettinen: Yhteenlasku, alalaskutrackerto-, kerto- ja jakolaskut toimivat numeerisilla operandeilla.
  • 🔗 Merkkijonojen ketjutus: Kaksi pystysuoraa palkkia yhdistää merkkijonot, lausekkeet tai vakiot yhdeksi arvoksi.
  • 🇧🇷 Vertailu: Yhtä suuri kuin (equal), suurempi kuin (greater), pienempi kuin (less) ja niiden yhdistelmät palauttavat totuusarvon suodatusta varten.
  • 🔀 Looginen: AND, OR ja NOT yhdistävät ehtoja WHERE-lausekkeen sisällä.
  • 🧩 Asettaa Operatorit: UNION poistaa kaksoiskappaleet, UNION ALL säilyttää ne, INTERSECT palauttaa yhteiset rivit, PAITSI subtracts.
  • 📊 Toimiva esimerkki: Kaksi taulukkoa, jotka jakavat arvoja, havainnollistavat kunkin joukko-operaattorin erilaista tulosta.

SAP HANA UNION- ja UNION ALL -operaattorit

SAP HANA Operatoria voidaan käyttää laskemiseen, arvojen vertailuun tai arvon määrittämiseen.

SAP HANA OperaTors

  • Unaarinen ja binäärinen OperaTor
  • Aritmeettinen OperaTor
  • jono OperaTors
  • Vertailu OperaTor
  • looginen OperaTor
  • Asettaa OperaTor

Jokainen operaattori palauttaa arvon, minkä vuoksi ne voidaan sijoittaa sisäkkäin. Niiden arviointijärjestys määräytyy prioriteetin mukaan, joka selitetään yksittäisten operaattoriryhmien jälkeen.

Unaarinen ja binäärinen OperaTor

OperaTor OperaTUKSEN Tuotetiedot
Unaarinen Unaarinen operaattori koskee yhtä operandia Unaarinen plus-operaattori(+) Unaarinen negaatiooperaattori(-) Looginen negaatio(NOT)
Binaarinen Binaari Operator koskee kahta operandia Kertolaskuoperaattorit ( *, / ) Lisäävät operaattorit ( +,- ) Vertailuoperaattorit ( =,!=,<,>,<=,>= ) Loogiset operaattorit ( JA, TAI )

Aritmeettinen OperaTor

  • Lisäys (+)
  • allatractio (-)
  • Kertominen ( * )
  • Division ( / )

jono OperaTor

Nauha Operator on ketjutusoperaattori, joka yhdistää kaksi kohdetta, kuten merkkijonoja, lausekkeita tai vakioita yhdeksi.

Kaksi pystysuoraa palkkia “||” käytetään ketjutusoperaattorina.

Vertailu OperaTor

Vertailuoperaattoria käytetään kahden operandin vertaamiseen. Alla lista vertailuista Operator-

  • Yhtä suuri kuin ( = )
  • Suurempi kuin ( > )
  • Less Kuin ( < )
  • Suurempi tai yhtä suuri kuin ( >= )
  • Less kuin tai yhtä suuri kuin ( <= )
  • Ei yhtä suuri (!= , <> )

looginen OperaTor

Hakuehdoissa käytetään loogista operaattoria.

Esim. WHERE ehto1 JA / TAI / EI ehto2

Alla on luettelo loogisista operaattoreista -

  • JA – (esim. WHERE ehto1 JA ehto2)
    Jos sekä Ehto1 että Ehto2 ovat tosi, Yhdistä ehto on tosi, muuten se on epätosi.
  • TAI – (esim. WHERE ehto1 TAI ehto2)
    Jos ehto1 TAI ehto2 on tosi, yhdistä ehto on tosi tai epätosi, jos molemmat ehdot ovat epätosi.
  • EI – (esim. WHERE NOT -ehto)
    EI ehto on tosi Jos ehto on epätosi.

Asettaa OperaTors

  • UNION – Yhdistää kaksi tai useampia valintalausekkeita tai kyselyä ilman kaksoiskappaleita.
  • UNION ALL – Yhdistää kaksi tai useampia valintalausekkeita tai kyselyitä, mukaan lukien kaikki rivien kaksoiskappaleet.
  • INTERSECT – Yhdistää kaksi tai useampia valintalausekkeita tai kyselyä ja palauttaa kaikki yhteiset rivit.
  • PAITSI – Ottaa ensimmäisen kyselyn tulosteen ja poistaa toisen kyselyn valitseman rivin.

Esim Minulla on kaksi taulukkoa (taulukko1, taulukko2), joissa jotkut arvot ovat yhteisiä.

Asettaa Operatorsia sisään SAP HANA

Käytämme Set-operaattoria (Union, Union ALL, Intersect, paitsi) näille kahdelle taulukolle SQL kuten alla -

Luo Taulukko1 - SQL-skripti

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

Luo Taulukko2 - SQL-skripti

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

Huomautuksia: Tässä "DHK_SCHEMA" on skeeman nimi, jossa käyttäjä voi muuttaa skeeman nimeä SQL vastaavasti.

Asettaa Operator Esimerkit ovat alla

OperaTor SQL-kysely ulostulo käytät
UNIONIN VALITSE *
FROM
(
VALITSE ELEMENT
FROM DHK_SCHEMA.TABLE1
UNIONIN
VALITSE ELEMENT
FROM DHK_SCHEMA.TABLE2
)
TILAUS ELEMENTTI;

UNION-operaattorin tuloste

Yhdistä kahden tai useamman kyselyn tulos ilman kaksoiskappaletta.
UNIONIN KAIKKI VALITSE *
FROM
(
VALITSE ELEMENT
FROM DHK_SCHEMA.TABLE1
UNIONIN KAIKKI
VALITSE ELEMENT
FROM DHK_SCHEMA.TABLE2
)
TILAUS ELEMENTTI;

UNION ALL asettaa operaattorin tulosteen

Yhdistä kahden tai useamman kyselyn tulos kaikkiin kaksoiskappaleisiin.
RISTEKSI VALITSE *
FROM
(
VALITSE ELEMENT
FROM DHK_SCHEMA.TABLE1
RISTEKSI
VALITSE ELEMENT
FROM DHK_SCHEMA.TABLE2
)
TILAUS ELEMENTTI;

INTERSECT-operaattorin tuloste

Yhdistä kahden tai useamman kyselyn tulos kaikkien yleisten rivien kanssa.
PAITSI VALITSE *
FROM
(
VALITSE ELEMENT
FROM DHK_SCHEMA.TABLE1
PAITSI
VALITSE ELEMENT
FROM DHK_SCHEMA.TABLE2
)
TILAUS ELEMENTTI;

PAITSI set-operaattorin tuloste

Ottaa tulosteen ensimmäisestä kyselystä ja poistaa toisen kyselyn valitseman rivin

Asettaa Operasäännöt ja vaatimukset

Joukko-operaattorit näyttävät yksinkertaisilta, mutta hylkäävät kyselyt helposti, koska ne vertailevat kokonaisia ​​tulosjoukkoja yksittäisten arvojen sijaan. Niitä ohjaa neljä sääntöä.

  1. Sarakkeiden lukumäärän on oltava sama. Molempien SELECT-lausekkeiden on palautettava sama määrä sarakkeita. Jos sarakkeita ei ole, virheilmoitus epäonnistuu välittömästi, ja viestissä nimetään sijainti sarakkeen sijaan.
  2. Tietotyyppien on oltava yhteensopivia. Ensimmäisen kyselyn ensimmäinen sarake vertaillaan toisen kyselyn ensimmäiseen sarakkeeseen, ja niin edelleen sijainnin, ei nimen, mukaan. Yhteensopivat numeeriset tyypit muunnetaan automaattisesti; merkkisaraketta vasten päivämäärää ei muunneta.
  3. Sarakkeiden nimet tulevat ensimmäisestä kyselystä. Mitä tahansa toinen lauseke kutsuu sarakkeilleen, sitä ei oteta huomioon tulosteessa, mikä yllättää kenet tahansa, joka lukee UNION-lausekkeen tuloksen ensimmäistä kertaa.
  4. ORDER BY koskee koko tulosta. Se kuuluu loppuun, viimeisen SELECT-lauseen jälkeen, ja siksi yllä olevissa esimerkeissä yhdiste kääritään ulomman SELECT-lauseen sisään.

UNIONin ja UNION ALLin välinen suorituskykyero on huomionarvoinen. UNIONin on lajiteltava tai tiivistettävä yhdistetty tulos poistaakseen kaksoiskappaleet, kun taas UNION ALL yksinkertaisesti liittää tulokseen. Jos kaksoiskappaleet ovat mahdottomia tai hyväksyttäviä, UNION ALL on merkittävästi nopeampi suurissa taulukoissa. Näissä taulukoissa käytetyt sarakemääritelmät käsitellään kohdassa SAP HANA-tietotyypit.

Operator Precedence in SAP HANA SQL

Kun lausekkeessa esiintyy useita operaattoreita, prioriteetti ratkaisee, mikä operaattoreista lasketaan ensin. Väärin tehty arvo tuottaa kyselyn, joka toimii täydellisesti ja palauttaa väärät rivit, mikä on paljon vaarallisempaa kuin syntaksivirhe.

Tilaus OperaTors Luokka
1 () Sulkeet, aina ensin laskettuina
2 + – (yksi operandi) Unaarinen plus ja negaatio
3 * / Kertominen ja jakaminen
4 + – || Yhteenlasku, alalaskutraction, ketjutus
5 = != < > <= >= Vertailu
6 ÄLÄ Looginen negaatio
7 JA Looginen konjunktio
8 OR Looginen disjunktio

Klassinen ansa sijaitsee riveillä 7 ja 8. Koska JA-operaattori on tiukemmin sitoutunut kuin TAI-operaattori, ehto WHERE alue = 'ITÄ' TAI alue = 'LÄNSI' JA tila = 'AVOINNA' luetaan nimellä ITÄ tai muuten LÄNSI, joka on avoinnaJokainen itäinen rivi palautetaan tilasta riippumatta. Sulkeiden lisääminen kahden aluetestin ympärille korjaa ongelman.

💡 Vinkki: Kirjoita sulkeet jokaisen yhdistetyn JA- ja TAI-ehdon ympärille, vaikka ennakkotapaus antaisi jo halutun tuloksen. Kyselystä tulee itsedokumentoiva ja se säilyy, vaikka toinen kehittäjä tekisi myöhempiä muutoksia.

Arkipäivän lauseiden syntaksi käsitellään SAP HANA SQL opetusohjelma ja laajempi alusta SAP HANA-opetusohjelma sarja.

UKK

UNION ALL. Se yksinkertaisesti liittää tulokset, kun taas UNION-funktion on lisäksi poistettava kaksoiskappaleet. Käytä UNION ALL -funktiota aina, kun kaksoiskappaleet ovat mahdottomia tai hyväksyttäviä tulosteessa.

Kyllä SAP HANA muuntaa luvun implisiittisesti. Wrapping sen käyttö TO_VARCHAR-muodossa on silti parempi käytäntö, koska muoto pysyy tällöin hallinnassasi eikä istunnon oletusarvoisessa muodossa.

Kyllä. Tekoäly toistaa yhdistetyn JA- ja TAI-ehdon selkokielellä, mikä paljastaa välittömästi, onko ryhmäping vastaa tarkoitusta ja ehdottaa sitten sulkeita, jotka korjaavat sen.

Kyllä. INTERSECT ja EXCEPT kirjoitetaan usein uudelleen sisäisenä liitoksena tai NOT EXISTS -lauseena, jotka voivat toimia paremmin. Vertaile suoritussuunnitelmia ennen uudelleenkirjoituksen käyttöönottoa.

Minkä tahansa NULL-arvoon vertaaminen palauttaa tuntemattoman arvon true- tai false-arvon sijaan, joten rivi suodatetaan pois. Käytä IS NULL- ja IS NOT NULL -operaattoreita yhtäsuuruusoperaattorin sijaan.

Tiivistä tämä viesti seuraavasti: