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.

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:
- 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.
- 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.
- 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.
- 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 .
