SAP Funcții SQL HANA: Tipuri și exemple
⚡ Rezumat inteligent
SAP Funcțiile SQL HANA transformă valorile dintr-o interogare fără a muta datele în stratul aplicației. Șapte categorii acoperă conversia tipurilor de date, data și ora, textul complet, numărul, șirul de caractere, ferestrele și operațiuni diverse.

SAP Funcții SQL HANA
SAP HANA oferă următoarele SAP Funcții HANA-
- Funcția de conversie a tipului de date – Funcția de conversie a tipurilor de date este utilizată pentru a converti un tip de date în altul. Mai jos se află o listă a funcției de conversie a tipurilor de date - De exemplu, CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY etc.
- Funcții de dată și oră – Funcțiile Date/Time sunt utilizate pentru a converti data/ora într-un format diferit. De exemplu – ADD_DAYS, ADD_MONTHS, ADD_SECOND etc.
- Funcții fulltext - Funcțiile Fulltext sunt utilizate pentru căutarea de text. De exemplu – SCORE etc.
- Funcții numerice - Funcțiile numerice primesc o valoare numerică sau un șir de caractere numerice ca intrare și returnează valori numerice. De exemplu – ABS, ROUND, POWER etc.
- Funcții șiruri - Funcțiile de tip șir de caractere primesc un șir de caractere ca intrare, îl procesează și returnează o valoare conform funcției. De exemplu (ASCII, CHAR, CONCAT etc.)
- Funcții ferestre - Funcțiile Window permit utilizatorului să împartă setul de rezultate al unei interogări în grupuri de rânduri numite partiție window. De exemplu, RANK(), DENSE_RANK(), ROW_NUMBER() etc.
- Funcție diverse- Există mai multe funcții, care sunt folosite pentru munca diverse. De exemplu – CONVERT_CURRENCY, CURRENT_SCHEMA etc.
Fiecare funcție de mai sus este evaluată în motorul bazei de date, motiv pentru care introducerea logicii într-o funcție este aproape întotdeauna mai rapidă decât preluarea rândurilor și procesarea acestora într-o aplicație. Exemplele de mai jos utilizează tabelul DUMMY, un tabel de sistem cu un singur rând care există exclusiv pentru ca o expresie să poată fi testată fără a atinge datele reale.
Funcții scalare, agregate și de fereastră
Înainte de exemple, o distincție decide cum se comportă o funcție într-o interogare: câte rânduri intră și câte ies.
| Categorii | Rânduri de intrare: rânduri de ieșire | Necesită GROUP BY? | Exemple |
|---|---|---|---|
| mărime scalară | Un rând pe un rând | Nu | MAXIM, ROTUND, LA_DATA, DISTRIBUȚIE |
| Agregat | Mai multe rânduri pe un rând | Da, cu excepția cazului în care întregul set este un singur grup | SUMĂ, AVG, NUMĂRARE, MIN, MAX |
| Fereastră | Mai multe rânduri către mai multe rânduri | Nu, folosește OVER în schimb | RANG, RANG_DENS, NUMĂR_RÂND, DECALAJ |
| Tabel | Returnează un set de rezultate | Folosit în clauza FROM | DATA_GENERAȚIEI_SERII |
Consecința practică este că un agregat restrânge detaliile, în timp ce o funcție de tip fereastră le păstrează. Solicitarea fiecărui angajat împreună cu media departamentului său necesită o funcție de tip fereastră, deoarece o funcție GROUP BY ar elimina complet rândurile individuale.
Comun SAP Funcții HANA cu exemple
Instrucțiunile de mai jos pot fi lipite direct în consola SQL. Fiecare demonstrează o categorie din lista de mai sus.
1) Funcții de șiruri de caractere. Acestea preiau caractere de intrare și returnează o valoare derivată.
SELECT UPPER('sap hana') AS UPPER_TEXT, LENGTH('SAP HANA') AS TEXT_LENGTH, CONCAT('SAP ', 'HANA') AS JOINED, SUBSTRING('SAP HANA', 5, 4) AS PART, REPLACE('SAP HANA', 'HANA', 'S/4') AS SWAPPED, TRIM(' padded ') AS CLEANED FROM DUMMY;
2) Funcții numerice. Comportamentul la rotunjire merită testat, deoarece ROUND folosește rotunjiri comerciale, în timp ce FLOOR și CEIL se mișcă întotdeauna într-o singură direcție.
SELECT ABS(-45.7) AS ABSOLUTE_VALUE, ROUND(123.4567, 2) AS ROUNDED, FLOOR(9.9) AS ROUNDED_DOWN, CEIL(9.1) AS ROUNDED_UP, POWER(2, 10) AS RAISED, MOD(17, 5) AS REMAINDER FROM DUMMY;
3) Funcții de dată și oră. Acestea sunt cele mai des necesare pentru raportarea perioadei.
SELECT CURRENT_DATE AS TODAY, ADD_DAYS(CURRENT_DATE, 30) AS IN_30_DAYS, ADD_MONTHS(CURRENT_DATE, -1) AS LAST_MONTH, DAYS_BETWEEN('2026-01-01', CURRENT_DATE) AS ELAPSED, LAST_DAY(CURRENT_DATE) AS MONTH_END, WEEKDAY(CURRENT_DATE) AS DAY_INDEX FROM DUMMY;
4) Funcții de conversie. Conversia explicită previne constrângerea silențioasă de tip care încetinește o clauză WHERE.
SELECT CAST('1234' AS INTEGER) AS AS_NUMBER, TO_VARCHAR(CURRENT_DATE, 'DD.MM.YYYY') AS AS_TEXT, TO_DECIMAL(1234.5678, 10, 2) AS AS_DECIMAL FROM DUMMY;
Comportamentul tipurilor și limitele fiecărui tip țintă sunt acoperite în SAP Tipuri de date HANA.
Funcțiile ferestrei explicate
O funcție de tip fereastră efectuează un calcul pe un set de rânduri legate de rândul curent, fără a le restrânge. Clauza OVER definește acel set și are două părți opționale: PARTITION BY împarte datele în grupuri, iar ORDER BY fixează secvența din interiorul fiecărui grup.
SELECT DEPARTMENT, EMP_NAME, SALARY, ROW_NUMBER() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS ROW_NUM, RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS RANKING, DENSE_RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS DENSE_RANKING, SUM(SALARY) OVER (PARTITION BY DEPARTMENT) AS DEPT_TOTAL FROM DHK_SCHEMA.EMPLOYEE;
Cele trei funcții de clasificare diferă doar atunci când valorile sunt egale:
- ROW_NUMBER niciodată la egalitate. Două salarii identice primesc tot 1 și 2, alese arbitrar.
- RANG dă rândurilor legate același număr și apoi sare peste. Două rânduri la 1 sunt urmate de 3.
- DENSE_RANK dă rândurilor legate același număr și nu sare peste rânduri. Două rânduri la 1 sunt urmate de 2.
Folosește ROW_NUMBER pentru deduplicare, RANK pentru plasarea în stil competițional și DENSE_RANK când secvența trebuie să rămână neîntreruptă. Simbolurile de comparație și logice utilizate alături de aceste funcții sunt prezentate în SAP Operatori HANAși structura instrucțiunilor în SAP HANA SQL.
