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.

  • ๐Ÿ”„ Umrechnungsfunktionen: CAST, TO_BIGINT, TO_ALPHANUM und TO_BINARY wandeln einen Wert von einem Datentyp in einen anderen um.
  • ๐Ÿ“… Datums- und Uhrzeitfunktionen: ADD_DAYS, ADD_MONTHS und ADD_SECONDS verschieben oder formatieren Datums- und Zeitwerte neu.
  • ๐Ÿ” Volltextfunktionen: SCORE und verwandte Funktionen ordnen die Ergebnisse einer Textsuche nach ihrer Relevanz.
  • ๐Ÿ”ข Zahlenfunktionen: ABS, ROUND und POWER akzeptieren numerische Eingaben und geben ein numerisches Ergebnis zurรผck.
  • ๐Ÿ”ค Zeichenkettenfunktionen: ASCII, CHAR und CONCAT verarbeiten Zeicheneingaben und geben einen abgeleiteten Wert zurรผck.
  • ๐ŸชŸ Fensterfunktionen: RANK, DENSE_RANK und ROW_NUMBER unterteilen ein Ergebnis-Set in Fensterpartitionen.
  • ๐Ÿงฐ Sonstiges: CONVERT_CURRENCY und CURRENT_SCHEMA bearbeiten Aufgaben, die nicht zu den anderen sechs Gruppen gehรถren.

SAP HANA SQL-Funktionen

SAP HANA SQL-Funktionen

SAP HANA bietet folgende SAP HANA-Funktionen-

  1. 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.
  2. 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.
  3. Volltextfunktionen โ€“ Die Volltextsuche dient der Textsuche. Beispiele hierfรผr sind SCORE usw.
  4. 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.
  5. 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.).
  6. 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.
  7. 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.

Hรคufig gestellte Fragen

Eine DUMMY-Tabelle ist eine Systemtabelle, die genau eine Zeile enthรคlt. Sie ermรถglicht die Auswertung eines Ausdrucks oder einer Funktion in einer SELECT-Anweisung, ohne dass auf eine reale Tabelle verwiesen werden muss.

Beide Funktionen weisen Zeilen mit gleichem Wert dieselbe Nummer zu. RANK รผberspringt anschlieรŸend die nรคchsten Werte, sodass auf zwei erste Werte der dritte Wert folgt. DENSE_RANK รผberspringt keine Werte, sodass auf zwei erste Werte der zweite Wert folgt.

Ja. Die Beschreibung der Transformation in einfacher Sprache liefert die passende Funktion und Syntax, was schneller ist als das Durchsuchen einer Referenzliste mit mehreren hundert Eintrรคgen.

Hรคufig. Eine Funktion, die eine gefilterte Spalte umschlieรŸt, verhindert effizientes Filtern, und KI kann das Prรคdikat so umstrukturieren, dass die Spalte unverรคndert bleibt. รœberprรผfen Sie dies anhand des Ausfรผhrungsplans.

Ja, aber die Anwendung auf die Spalte erzwingt eine Auswertung fรผr jede Zeile. Transformieren Sie stattdessen nach Mรถglichkeit die Konstante, damit die Spalte weiterhin effizient gefiltert werden kann.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: