SAP HANA SQL-Funktionen: Typen & Beispiele
โก Intelligente Zusammenfassung
SAP HANA SQL-Funktionen transformieren Werte innerhalb einer Abfrage, ohne Daten an die Anwendungsschicht zu รผbertragen. Sieben Kategorien umfassen Datentypkonvertierung, Datum und Uhrzeit, Volltext, Zahlen, Zeichenketten, Fensteroperationen und sonstige Operationen.

SAP HANA SQL-Funktionen
SAP HANA bietet folgende SAP HANA-Funktionen-
- Datentyp-Konvertierungsfunktion โ Datentyp-Konvertierungsfunktionen werden verwendet, um einen Datentyp in einen anderen zu konvertieren. Nachfolgend finden Sie eine Liste der Datentypkonvertierungsfunktionen, z. B. CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY usw.
- Datum-Uhrzeit-Funktionen โ Datums- und Zeitfunktionen dienen dazu, Datum und Uhrzeit in ein anderes Format zu konvertieren. Beispiele hierfรผr sind ADD_DAYS, ADD_MONTHS, ADD_SECOND usw.
- Volltextfunktionen โ Die Volltextsuche dient der Textsuche. Beispiele hierfรผr sind SCORE usw.
- Zahlenfunktionen โ Zahlenfunktionen nehmen einen numerischen Wert oder eine Zeichenkette mit numerischen Zeichen als Eingabe und geben numerische Werte zurรผck. Beispiele: ABS, ROUND, POWER usw.
- String-Funktionen โ Stringfunktionen nehmen eine Zeichenkette als Eingabe, verarbeiten sie und geben einen Wert entsprechend der Funktion zurรผck. Beispiele hierfรผr sind (ASCII, CHAR, CONCAT usw.).
- Fensterfunktionen โ Mithilfe von Fensterfunktionen kann der Benutzer das Ergebnis einer Abfrage in Gruppen von Zeilen, sogenannte Fensterpartitionen, unterteilen. Beispiele hierfรผr sind RANK(), DENSE_RANK(), ROW_NUMBER() usw.
- Verschiedene Funktionen- Es gibt noch einige weitere Funktionen, die fรผr verschiedene Aufgaben verwendet werden. Z. B. CONVERT_CURRENCY, CURRENT_SCHEMA usw.
Jede der oben genannten Funktionen wird innerhalb der Datenbank-Engine ausgewertet. Daher ist das Auslagern von Logik in eine Funktion fast immer schneller als das Abrufen und Verarbeiten von Zeilen in einer Anwendung. Die folgenden Beispiele verwenden die DUMMY-Tabelle, eine einzeilige Systemtabelle, die ausschlieรlich dazu dient, Ausdrรผcke zu testen, ohne auf echte Daten zuzugreifen.
Skalar-, Aggregat- und Fensterfunktionen
Bevor wir zu den Beispielen kommen, sei angemerkt, dass eine Unterscheidung darรผber entscheidet, wie sich eine Funktion in einer Abfrage verhรคlt: wie viele Zeilen eingegeben und wie viele ausgegeben werden.
| Kategorie | Eingabezeilen : Ausgabezeilen | Benรถtigt GROUP BY? | Beispiele |
|---|---|---|---|
| Scalar | Eine Reihe zu einer Reihe | Nein | GROSS, RUNDEN, BIS_DATUM, GESTALTUNG |
| Aggregat | Viele Zeilen zu einer Zeile | Ja, es sei denn, die gesamte Gruppe besteht aus einer einzigen Gruppe. | SUMME, AVG, ANZAHL, MIN, MAX |
| Window | Viele Reihen zu vielen Reihen | Nein, es verwendet stattdessen OVER. | Rang, Dichte_Rang, Zeilennummer, Verzรถgerung |
| Tisch | Gibt ein Resultset zurรผck | Wird in der FROM-Klausel verwendet | SERIEN_GENERIERUNGSDATUM |
Die praktische Konsequenz ist, dass eine Aggregatfunktion Details ausblendet, wรคhrend eine Fensterfunktion sie beibehรคlt. Um jeden Mitarbeiter zusammen mit seinem Abteilungsdurchschnitt abzufragen, ist eine Fensterfunktion erforderlich, da eine GROUP BY-Klausel die einzelnen Zeilen vollstรคndig entfernen wรผrde.
gemeinsam SAP HANA-Funktionen mit Beispielen
Die folgenden Anweisungen kรถnnen direkt in die SQL-Konsole eingefรผgt werden. Jede Anweisung veranschaulicht eine Kategorie aus der obigen Liste.
1) Stringfunktionen. Diese Funktionen nehmen Zeichen als Eingabe und geben einen abgeleiteten Wert zurรผck.
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) Zahlenfunktionen. Das Rundungsverhalten ist einen Test wert, da ROUND die kommerzielle Rundung verwendet, wรคhrend FLOOR und CEIL sich immer in eine Richtung bewegen.
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) Datums- und Zeitfunktionen. Dies sind die am hรคufigsten benรถtigten Formulare fรผr die periodische Berichterstattung.
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) Umrechnungsfunktionen. Die explizite Typumwandlung verhindert die stillschweigende Typumwandlung, die eine WHERE-Klausel verlangsamt.
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;
Das Verhalten der einzelnen Typen und deren Grenzen werden in folgendem Abschnitt behandelt: SAP HANA-Datentypen.
Fensterfunktionen erklรคrt
Eine Fensterfunktion fรผhrt eine Berechnung รผber eine Menge von Zeilen durch, die mit der aktuellen Zeile in Zusammenhang stehen, ohne diese zusammenzufassen. Die OVER-Klausel definiert diese Menge und hat zwei optionale Teile: PARTITION BY teilt die Daten in Gruppen auf, und ORDER BY legt die Reihenfolge innerhalb jeder Gruppe fest.
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;
Die drei Rangordnungsfunktionen unterscheiden sich nur bei gleichen Werten:
- ROW_NUMBER Es gibt nie Gleichstรคnde. Selbst bei zwei identischen Gehรคltern werden die Plรคtze 1 und 2 willkรผrlich vergeben.
- RANK Gleichzรคhlige Zeilen erhalten die gleiche Nummer, danach wird รผbersprungen. Auf zwei Zeilen mit der Nummer 1 folgt eine Zeile mit der Nummer 3.
- DICHTE_RANK Gleichrangige Zeilen erhalten die gleiche Nummer und werden nicht รผbersprungen. Auf zwei Zeilen mit der Nummer 1 folgt eine Zeile mit der Nummer 2.
Verwenden Sie ROW_NUMBER zum Entfernen von Duplikaten, RANK fรผr eine wettbewerbsorientierte Platzierung und DENSE_RANK, wenn die Sequenz ununterbrochen bleiben muss. Vergleichs- und Logiksymbole, die in Verbindung mit diesen Funktionen verwendet werden, werden in [Referenz einfรผgen] erlรคutert. SAP HANA-Operatorenund die Struktur der Aussage in SAP HANA SQL.
