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.
