SAP HANA-Datentypen: Numerisch, Zeichenfolge, Dezimal

⚡ Intelligente Zusammenfassung

SAP Die HANA-Datentypen definieren, welche Daten in jeder Spalte gespeichert werden können. Sie umfassen Datum/Uhrzeit, numerische Werte, boolesche Werte, Zeichenketten, Binärdaten, große Objekte und mehrwertige Datentypen.ping zu einem bestimmten Spaltenspeichertyp.

  • ️ Datums- und Uhrzeittypen: DATUM, ZEIT, SEKUNDENDATUM und ZEITSTEMPEL unterscheiden sich durch die Genauigkeit, die sie beibehalten.
  • 🔢 Zahlenbereich: TINYINT bis BIGINT decken ganze Zahlen ab, während DECIMAL, SMALLDECIMAL, REAL und DOUBLE Brüche verarbeiten.
  • 🔤 Zeichenketten: VARCHAR speichert Bytes und NVARCHAR speichert Unicode-Zeichen, beide sind auf 5000 Zeichen begrenzt.
  • 📦 Große Objekte: BLOB, CLOB, NCLOB, TEXT und BINTEXT speichern Daten, die zu groß für eine normale Spalte sind.
  • 🔍 Suche aktiviert: TEXT, BINTEXT und SHORTTEXT unterstützen die Volltextsuche, jedoch nur in spaltenorientierten Tabellen.
  • ✍️ Kennungen: Begrenzte Bezeichner stehen innerhalb von doppelten Anführungszeichen und akzeptieren beliebige Zeichen; nicht begrenzte Bezeichner müssen mit einem Buchstaben beginnen.
  • ❝ Zitierregel: Einfache Anführungszeichen begrenzen einen Zeichenkettenwert, doppelte Anführungszeichen begrenzen einen Bezeichner.

SAP HANA-Datentypen

In dieser SAP Im Tutorial zu HANA-Datentypen lernen wir:

1) SAP HANA-Datentypen - SAP Zu den HANA-Datentypen zählen Datums- und Uhrzeitdaten, numerische Datentypen, Boolesche Datentypen, Zeichenfolgendatentypen, binäre Datentypen usw.

2) SAP HANA-Bezeichner – Begrenzte Bezeichner und unbegrenzte Bezeichner

Datentypen in SAP HANA

In SAP HANA-Datenbank, SQL Die Datentypen sind wie folgt:

Klassifikation Unterklassifizierung SQL-Datentyp Spaltenspeichertyp Standardformat
Datums-/Uhrzeittypen Datum DATUM CS_DAYDATE „JJJJ-MM-TT“
Zeit ZEIT- CS_SECONDTIME 'HH24:MI:SS'
Zweites Date ZWEITES DATUM CS_LONGDATE „JJJJ-MM-TT HH24:MI:SS“
Zeitstempel TIMESTAMP CS_SECONDDATE 'JJJJ-MM-TT HH24:MI:SS.FFn'
Numerische Typen Winzige ganze Zahl WINZIG CS_INT 8-Bit-Ganzzahl ohne Vorzeichen, Bereich 0 bis 255
Kleine ganze Zahl KLEIN CS_INT 16-Bit-Ganzzahl mit Vorzeichen, Wertebereich -32,768 bis 32,767
ganze Zahl GANZE ZAHL CS_INT 32-Bit-Ganzzahl mit Vorzeichen, Wertebereich -2,147,483,648 bis 2,147,483,647
Große ganze Zahl GROSSARTIG CS_FIXED(18,0) 64-Bit-Ganzzahl mit Vorzeichen, Wertebereich -9,223,372,036,854,775,808 bis 9,223,372,036,854,775,807
Dezimal DEZIMAL(p,s)
p-Präzision
S-Skala
CS_FIXED(ps,s) Die Präzision p kann zwischen 1 und 38 liegen.
Die Skala s kann von 0 bis p reichen für SAP HANA-Dezimaldatentyp.
Wenn Genauigkeit und Skalierung nicht angegeben sind, wird DECIMAL zu einer Gleitkomma-Dezimalzahl.
Kleine Dezimalzahl SMALLDECIMAL CS_SDFLOAT Es handelt sich um eine Gleitkomma-Dezimalzahl. Die Präzision und der Maßstab sollten je nach gespeichertem Wert im Bereich von 1 bis 16 für die Präzision und -369 bis 368 für den Maßstab liegen. SMALLDECIMAL wird nur für die Spaltenspeichertabelle unterstützt.
Reelle Zahl REAL CS_FLOAT 32-Bit-Gleitkommazahl mit einfacher Genauigkeit
Double Nummer DOPPELT CS_DOUBLE eine 64-Bit-Gleitkommazahl mit doppelter Genauigkeit
Schwimmer FLOAT(n) CS_DOUBLE Es handelt sich um eine 32-Bit- oder 64-Bit-Gleitkommazahl. Dabei gibt n die Anzahl der Bits an und muss im Bereich zwischen 1 und 53 liegen.
Boolean Boolean BOOLEAN CS_INT WAHR, FALSCH und UNBEKANNT (NULL).
Zeichenkette Zeichenfolge variabler Länge VARCHAR (n) CS_STRING Dieser HANA-Stringlängen-Datentyp ist eine Zeichenkette variabler Länge, wobei 'n' die maximale Länge in Bytes angibt und es sich dabei um eine ganze Zahl zwischen 1 und 5000 handelt.
Unicode-Zeichen variabler Länge NVARCHAR(n) CS_STRING Unicode-Zeichensatz-String variabler Länge, wobei gibt die maximale Länge in Zeichen an und ist eine Ganzzahl zwischen 1 und 5000
Alphanumerisches Zeichen ALPHANUM(n) CS_ALPHANUM Alphanumerische Zeichen variabler Länge, wobei n die maximale Länge angibt und eine Ganzzahl zwischen 1 und 127 ist
Kurzer Text KURZTEXT(n) CS_STRING Es handelt sich um eine Zeichenkette variabler Länge, die Text- und Zeichenkettensuche ermöglicht. Dieser Datentyp kann für spaltenorientierte Tabellen, jedoch nicht für zeilenorientierte Tabellen definiert werden.
Binäre Typen Binärer Text VARBINARY(n) CS_RAW Speichern Sie Binärdaten mit einer angegebenen maximalen Länge in Bytes, wobei n die maximale Länge angibt und eine Ganzzahl zwischen 1 und 5000 ist.
LOB-Typen (große Objekttypen) Binärer LOB BLOB CS_RAW Große Mengen an Binärdaten
Charakter LOB CLOB CS_STRING ASCII-Zeichendaten
Unicode-Zeichen-LOB NCLOB CS_STRING Großes Unicode-Zeichenobjekt
TEXT TEXT CS_STRING Der Datentyp TEXT bietet Textsuchfunktionen. Dieser Datentyp kann für Spaltenspeichertabellen definiert werden, nicht jedoch für Zeilenspeichertabellen.
BINÄRE Textdaten BINTEXT CS_STRING Der Datentyp BINTEXT ähnelt dem Datentyp TEXT und unterstützt daher Textsuchfunktionen, es ist jedoch möglich, Binärdaten einzufügen. Dieser Datentyp kann für Spaltentabellen definiert werden, nicht jedoch für Zeilentabellen.
Mehrwertige Typen Feld ARRAY Es speichert Sammlungen von Werten desselben Datentyps, wobei jedes Element genau einer Position zugeordnet ist. Arrays können NULL-Werte enthalten, da kein Wert vorhanden ist.

Das richtige wählen SAP HANA-Datentyp

Die obige Tabelle listet die verfügbaren Optionen auf. Eine gute Auswahl ist umso wichtiger. SAP HANA ist besser als eine festplattenbasierte Datenbank, da jede Spalte im Arbeitsspeicher liegt und ein überdimensionierter Datentyp in jeder Zeile eine knappe Ressource verbraucht.

Vier Regeln decken die meisten Entscheidungen ab:

  • Wählen Sie die kleinste passende numerische Schriftart. Ein Statusflag mit fünf möglichen Werten benötigt TINYINT, nicht INTEGER. Bei einer Tabelle mit einer Milliarde Zeilen beträgt der Unterschied Gigabytes Speicherplatz.
  • Bewahren Sie Geld niemals in echtem oder doppeltem Bargeld auf. Gleitkommazahlen können Dezimalbrüche nicht exakt darstellen, daher weichen Summen um Bruchteile einer Währungseinheit ab. Verwenden Sie DECIMAL mit expliziter Genauigkeit und Skalierung.
  • NVARCHAR ist VARCHAR vorzuziehen. VARCHAR zählt Bytes und NVARCHAR zählt Zeichen, daher wird jeder Nicht-ASCII-Text in VARCHAR unerwartet abgeschnitten. Moderne SAP HANA-Releases behandeln VARCHAR aus genau diesem Grund als NVARCHAR.
  • Die Datumsgenauigkeit muss den Anforderungen entsprechen. DATE für Kalendertage, SECONDDATE, wenn die Uhrzeit relevant ist, und TIMESTAMP nur dann, wenn tatsächlich eine Genauigkeit im Subsekundenbereich benötigt wird. Jede höhere Auflösung erfordert Speicherplatz in jeder Zeile.

Große Objekttypen erfordern besondere Vorsicht. Eine BLOB- oder NCLOB-Spalte ist zwar praktisch, aber ressourcenintensiv, und die Textsuche in TEXT- oder SHORTTEXT-Tabellen funktioniert nur in spaltenorientierten Tabellen. Daher hängen die Wahl des Speichers und des Datentyps zusammen. Speicheroptionen werden im Abschnitt „…“ erläutert. SAP HANA SQL Tutorial.

SAP HANA-Bezeichner

Bezeichner werden zur Darstellung von Namen verwendet SQL Anweisung (z. B. Tabellenname, Ansichtsname, Spaltenname, Indexname, Synonymname, Prozedurname, Funktionsname usw.)

Es gibt zwei Arten von Identifikatoren SAP HANA: Begrenzte Bezeichner und unbegrenzte Bezeichner.

  • Begrenzte Bezeichner – Es ist im Trennzeichen eingeschlossen, Double Zitate "". Der Bezeichner kann jedes beliebige Zeichen, einschließlich Sonderzeichen, enthalten.
  • Unbegrenzte Bezeichner – Unbegrenzte Bezeichner (Tabellenname, Spaltenname) müssen mit einem Buchstaben beginnen und dürfen keine anderen Symbole als eine Ziffer oder einen Unterstrich „_“ enthalten.

Es gibt zwei Arten von Anführungszeichen als Trennzeichen:

  • Einfaches Anführungszeichen (' ') – Es wird verwendet, um die Zeichenfolge zu begrenzen.
  • Double Anführungszeichen (" ")– Es dient zur Abgrenzung von Bezeichnern.

⚠️ Warnung: Ein nicht durch ein Trennzeichen getrennter Bezeichner wird beim Erstellen des Objekts in Großbuchstaben umgewandelt. Das Erstellen einer Tabelle namens „employee“ und die spätere Auswahl von Daten aus „employee“ in Kleinbuchstaben schlägt fehl, da der gespeicherte Name EMPLOYEE lautet. Vermeiden Sie entweder Anführungszeichen vollständig oder verwenden Sie diese konsequent.

Datentypkonvertierung und häufige Fehler

SAP HANA konvertiert automatisch zwischen kompatiblen Datentypen, doch die implizite Konvertierung ist eine häufige Ursache für falsche Ergebnisse und langsame Abfragen. Die explizite Konvertierung macht die beabsichtigte Konvertierung sichtbar.

Zwei Funktionen erledigen die Arbeit. CAST konvertiert einen Wert in einen benannten Datentyp, und TO_DATE, TO_VARCHAR, TO_DECIMAL und ihre Verwandten konvertieren mit einer optionalen Formatzeichenfolge.

-- Explicit conversion with CAST
SELECT CAST('1234' AS INTEGER) FROM DUMMY;

-- Conversion with an explicit format
SELECT TO_DATE('2026-07-21', 'YYYY-MM-DD') FROM DUMMY;

-- Number to string with fixed decimals
SELECT TO_DECIMAL(1234.5678, 10, 2) FROM DUMMY;

Vier Fehler sind für die meisten Konvertierungsprobleme verantwortlich:

  1. Numerischer Überlauf. Das Einfügen von 40000 in eine SMALLINT-Spalte schlägt fehl, da der vorzeichenbehaftete Bereich bei 32,767 endet. Die Fehlermeldung nennt die Spalte und nicht den Wert; überprüfen Sie daher zuerst die Definition.
  2. Zeichenkettenkürzung. Das Laden von Text, der länger als die angegebene Länge ist, löst einen Fehler aus, anstatt ihn stillschweigend abzuschneiden. Zeichen werden anhand von NVARCHAR und Bytes anhand von VARCHAR gezählt.
  3. Ungültiges Datumsformat. Die Übergabe einer Zeichenkette mit dem falschen Format an TO_DATE schlägt fehl. Geben Sie immer die Formatmaske an, anstatt sich auf den Standardwert der Sitzung zu verlassen.
  4. Implizite Konvertierung in einer WHERE-Klausel. Der Vergleich einer Zeichenspalte mit einer Zahl erzwingt eine Konvertierung in jeder Zeile, was ein effizientes Filtern verhindert. Konvertieren Sie stattdessen die Konstante.

Die in diesen Filtern verwendeten Vergleichssymbole werden erläutert in SAP HANA-Operatorenund die breitere Plattform in der SAP HANA-Tutorial .

Häufig gestellte Fragen

VARCHAR misst seine Größe in Bytes, NVARCHAR in Unicode-Zeichen. Für Texte, die Nicht-ASCII-Zeichen enthalten können, ist NVARCHAR die sicherere Wahl, da es nicht unerwartet abgeschnitten wird.

Verwenden Sie SECONDDATE, wenn eine Genauigkeit von Sekunden ausreicht, was für die meisten Geschäftsvorgänge gilt. TIMESTAMP fügt Sekundenbruchteile hinzu und benötigt mehr Speicherplatz pro Zeile in einer großen Tabelle.

Ja. Durch die Profilierung einer Quelldatei werden tatsächliche Wertebereiche, Längen und Formate ermittelt. Aus diesen Daten schlägt die KI für jede Spalte den kleinsten sicheren Datentyp vor, anstatt eines überdimensionierten Standardwerts.

Ja. Der Vergleich der deklarierten Längen mit den tatsächlich gespeicherten Werten hebt Spalten hervor, die verkleinert werden könnten, was wichtig ist, da jede Spalte einer HANA-Tabelle im Speicher gehalten wird.

TEXT, BINTEXT und SHORTTEXT bieten Funktionen für die Textsuche. Alle drei sind auf spaltenbasierte Tabellen beschränkt und können nicht für zeilenbasierte Tabellen definiert werden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: