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.

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





