SAP HANA-gegevenstypen: numeriek, tekenreeks, decimaal
⚡ Slimme samenvatting
SAP HANA-datatypen definiëren wat elke kolom kan opslaan, waaronder datum/tijd, numerieke waarden, booleaanse waarden, tekenreeksen, binaire waarden, grote objecten en meerwaardige classificaties.ping naar een specifiek kolomopslagtype.

In deze SAP HANA Data Types tutorial, we zullen leren:
1) SAP HANA-gegevenstypen - SAP HANA-gegevenstypen omvatten datumtijden, numeriek gegevenstype, Boolean, tekenreeks, binaire gegevenstypen, enz.
2) SAP HANA-identificaties – Gescheiden identificatiegegevens en onbeperkte identificatiegegevens
Gegevens typen in SAP HANA
In SAP HANA-database, SQL Gegevenstypen zijn zoals hieronder:
| Classificatie | Subclassificatie | SQL-gegevenstype | Kolomopslagtype | Standaard formaat |
|---|---|---|---|---|
| Datumtijden typen | Datum | DATUM | CS_DAYDATE | 'JJJJ-MM-DD' |
| Tijd | TIJD | CS_SECONDTIME | 'HH24:MI:SS' | |
| Tweede date | TWEEDE DATUM | CS_LONDDATE | 'JJJJ-MM-DD UU24:MI:SS' | |
| Tijdstempel | TIJDSTAMP | CS_SECONDDATE | 'JJJJ-MM-DD UU24:MI:SS.FFn' | |
| Numerieke typen | Klein geheel getal | KLEINEINT | CS_INT | 8-bits niet-ondertekend geheel getal, bereik 0 tot 255 |
| Klein geheel getal | KLEIN | CS_INT | 16-bits getekend geheel getal, bereik -32,768 tot 32,767 | |
| Geheel getal | GEHEEL GETAL | CS_INT | 32-bits getekend geheel getal, bereik -2,147,483,648 tot 2,147,483,647 | |
| Groot geheel getal | BIGINT | CS_FIXED(18,0) | 64-bits getekend geheel getal, bereik -9,223,372,036,854,775,808 tot 9,223,372,036,854,775,807 | |
| Decimaal | DECIMAAL(p,s) p-precisie s-schaal |
CS_FIXED(ps,s) | Precisie p kan variëren van 1 tot 38. De schaal s kan variëren van 0 tot p SAP HANA decimaal gegevenstype. Als precisie en schaal niet zijn opgegeven, wordt DECIMAL een decimaal getal met drijvende komma. |
|
| Kleine decimaal | KLEINDECIMAAL | CS_SDFLOAT | Het is een decimaal getal met drijvende komma. De precisie en schaal moeten binnen het bereik 1~16 liggen voor precisie en -369~368 voor schaal, afhankelijk van de opgeslagen waarde. SMALLDECIMAL wordt alleen ondersteund voor kolomarchieftabel. | |
| Echt nummer | REAL | CS_FLOAT | 32-bits drijvende-kommagetal met enkele precisie | |
| Double Telefoon Nummer | DUBBELE | CS_DUBBEL | een 64-bits drijvendekommagetal met dubbele precisie | |
| Vlotter | DRIJVEN(n) | CS_DUBBEL | Het is een 32-bits of 64-bits reëel getal. Waarbij n het aantal bits aangeeft en tussen 1 en 53 moet liggen. | |
| Boolean | Boolean | BOOLAAN | CS_INT | WAAR, ONWAAR en ONBEKEND (NUL). |
| Tekenreeks | Tekenreeks met variabele lengte | VARCHAR (n) | CS_STRING | Dit HANA-gegevenstype voor tekenreekslengte is een tekenreeks met variabele lengte, waarbij 'n' de maximale lengte in bytes aangeeft en dit een geheel getal tussen 1 en 5000 is. |
| Unicode-teken met variabele lengte | NVARCHAR(n) | CS_STRING | Unicode-tekenreeks met variabele lengte, waar geeft de maximale lengte in tekens aan en is een geheel getal tussen 1 en 5000 | |
| Alfanumeriek karakter | ALPHANUM(n) | CS_ALPHANUM | Alfanumerieke tekens met variabele lengte, waarbij n de maximale lengte aangeeft en een geheel getal tussen 1 en 127 is | |
| Korte tekst | KORTEKST(n) | CS_STRING | Het is een tekenreeks met variabele lengte die zowel tekstzoek- als tekenreekszoekfuncties biedt. Dit gegevenstype kan worden gedefinieerd voor kolomgeoriënteerde tabellen, maar niet voor rijgeoriënteerde tabellen. | |
| Binaire typen | Binaire tekst | VARBINAIR(n) | CS_RAW | Sla binaire gegevens met een gespecificeerde maximale lengte op in bytes, waarbij n de maximale lengte aangeeft en een geheel getal tussen 1 en 5000 is. |
| LOB-typen (grote objecttypen) | Binaire LOB | BLOB | CS_RAW | Grote hoeveelheden binaire gegevens |
| Karakter LOB | KLOB | CS_STRING | ASCII-tekengegevens | |
| Unicode-teken LOB | NCLOB | CS_STRING | Groot Unicode-tekenobject | |
| TEKST | TEKST | CS_STRING | Het gegevenstype TEXT biedt tekstzoekfuncties. Dit gegevenstype kan worden gedefinieerd voor kolomopslagtabellen, maar niet voor rijopslagtabellen. | |
| BINAIRE tekstgegevens | BINTEXT | CS_STRING | Het gegevenstype BINTEXT is vergelijkbaar met het gegevenstype TEXT en ondersteunt dus tekstzoekfuncties, maar het is mogelijk om binaire gegevens in te voegen. Dit gegevenstype kan worden gedefinieerd voor kolomtabellen, maar niet voor rijtabellen. | |
| Meerwaardige typen | reeks | ARRAY | Het slaat verzamelingen waarden van hetzelfde gegevenstype op, waarbij elk element gerelateerd is aan precies één positie. Arrays kunnen NULL-waarden bevatten, net als bij afwezigheid van een waarde. |
Het goede kiezen SAP HANA-gegevenstype
De bovenstaande tabel geeft een overzicht van de beschikbare opties. Een goede keuze maken is belangrijker dan ooit. SAP HANA presteert beter dan een schijfgebaseerde database, omdat elke kolom in het geheugen staat en een te groot gegevenstype een schaarse bron verbruikt bij elke rij.
Vier regels zijn van toepassing op de meeste beslissingen:
- Kies het kleinste numerieke type dat past. Een statusvlag met vijf mogelijke waarden vereist TINYINT, niet INTEGER. Bij een tabel met een miljard rijen wordt het verschil gemeten in gigabytes aan geheugen.
- Bewaar geld nooit in echt of dubbel geld. Zwevende-komma getallen kunnen decimale breuken niet exact weergeven, waardoor totalen met fracties van een valuta-eenheid kunnen afwijken. Gebruik DECIMAL met een expliciete precisie en schaal.
- NVARCHAR heeft de voorkeur boven VARCHAR. VARCHAR telt bytes en NVARCHAR telt tekens, dus alle niet-ASCII-tekst wordt onverwacht afgekapt in VARCHAR. Moderne SAP HANA-releases behandelen VARCHAR om precies deze reden als NVARCHAR.
- Zorg ervoor dat de datumprecisie aan de vereisten voldoet. DATE voor een kalenderdag, SECONDDATE wanneer het tijdstip van belang is, en TIMESTAMP alleen wanneer daadwerkelijk een nauwkeurigheid van minder dan een seconde vereist is. Elke stap omhoog kost opslagruimte per regel.
Bij grote objecttypen is extra voorzichtigheid geboden. Een BLOB- of NCLOB-kolom is handig, maar neemt veel ruimte in beslag. Tekst zoeken op TEXT of SHORTTEXT werkt bovendien alleen in tabellen met kolomopslag. De keuze voor de opslagmethode en het gegevenstype zijn dus met elkaar verbonden. Opslagopties worden besproken in de volgende sectie. SAP HANA-SQL tutorial.
SAP HANA-identificaties
Identificatiegegevens worden gebruikt om de naam weer te geven SQL instructie (bijvoorbeeld tabelnaam, weergavenaam, kolomnaam, indexnaam, synoniemnaam, procedurenaam, functienaam, enz.)
Er zijn twee soorten identificatiegegevens in SAP HANA: Gescheiden identificatiegegevens en Onbeperkte identificatiegegevens.
- Gescheiden identificatiegegevens – Het staat tussen het scheidingsteken, Double Citaten "". De identificatie kan elk teken bevatten, inclusief speciale tekens.
- Onbeperkte identificatiegegevens – Ongescheiden identificatiegegevens (tabelnaam, kolomnaam) moeten beginnen met een letter en mogen geen andere symbolen bevatten dan een cijfer of een onderstrepingsteken '_'.
Er zijn twee soorten aanhalingstekens voor scheiding, zoals hieronder:
- Enkel aanhalingsteken (' ') – Het wordt gebruikt om de string af te bakenen.
- Double Aanhalingsteken (“ “)– Het wordt gebruikt voor het afbakenen van identificatiegegevens.
⚠️ Waarschuwing: Een niet-begrensde identificator wordt omgezet naar hoofdletters wanneer het object wordt aangemaakt. Het aanmaken van een tabel met de naam 'employee' en later selecteren uit 'employee' in kleine letters mislukt, omdat de opgeslagen naam EMPLOYEE is. Vermijd dubbele aanhalingstekens volledig of gebruik ze consequent.
Gegevenstypeconversie en veelvoorkomende fouten
SAP HANA converteert automatisch tussen compatibele gegevenstypen, maar impliciete conversie is de stille oorzaak van onjuiste resultaten en trage query's. Expliciete conversie maakt de intentie zichtbaar.
Twee functies doen het werk. CAST converteert een waarde naar een benoemd type, en TO_DATE, TO_VARCHAR, TO_DECIMAL en hun verwanten converteren met een optionele opmaakstring.
-- 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 fouten zijn verantwoordelijk voor de meeste conversieproblemen:
- Numerieke overloop. Het invoegen van 40000 in een SMALLINT mislukt omdat het bereik voor getekende getallen stopt bij 32,767. De foutmelding verwijst naar de kolom in plaats van de waarde, dus controleer eerst de definitie.
- Tekstafkapping. Het laden van tekst die langer is dan de opgegeven lengte, genereert een foutmelding in plaats van de tekst stilzwijgend af te breken. Tel tekens ten opzichte van NVARCHAR en bytes ten opzichte van VARCHAR.
- Ongeldig datumformaat. Het doorgeven van een tekenreeks met een onjuist formaat aan TO_DATE mislukt. Geef altijd het formaatmasker op in plaats van te vertrouwen op de standaardinstelling van de sessie.
- Impliciete conversie in een WHERE-clausule. Het vergelijken van een kolom met tekens met een kolom met getallen dwingt een conversie af voor elke rij, wat efficiënt filteren bemoeilijkt. Converteer de constante in plaats van de kolom.
De vergelijkingssymbolen die in deze filters worden gebruikt, worden behandeld in SAP HANA-operatorsen het bredere platform in de SAP HANA-handleiding series.
