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.

  • 🗓️ Datum- en tijdtypen: DATE, TIME, SECONDDATE en TIMESTAMP verschillen in de mate van precisie die ze behouden.
  • 🔢 Numeriek bereik: TINYINT tot en met BIGINT zijn voor gehele getallen, terwijl DECIMAL, SMALLDECIMAL, REAL en DOUBLE voor breuken zijn.
  • 🔤 Tekenreeksen: VARCHAR bevat bytes en NVARCHAR bevat Unicode-tekens, beide beperkt tot 5000.
  • ???? Grote objecten: BLOB, CLOB, NCLOB, TEXT en BINTEXT slaan gegevens op die te groot zijn voor een normale kolom.
  • 🔍 Zoeken ingeschakeld: TEXT, BINTEXT en SHORTTEXT ondersteunen zoeken in de volledige tekst, maar alleen op tabellen met kolomopslag.
  • ✍️ ID's: Afgebakende identificatoren staan ​​tussen dubbele aanhalingstekens en accepteren elk teken; niet-afgebakende identificatoren moeten met een letter beginnen.
  • ❝ Citaatregel: Enkele aanhalingstekens worden gebruikt om een ​​tekenreekswaarde af te bakenen, terwijl dubbele aanhalingstekens een identificator afbakenen.

SAP HANA-gegevenstypen

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Veelgestelde vragen

VARCHAR meet de limiet in bytes en NVARCHAR in Unicode-tekens. Voor tekst die niet-ASCII-tekens kan bevatten, is NVARCHAR de veilige keuze omdat deze niet onverwacht wordt afgekapt.

Gebruik SECONDDATE wanneer precisie tot op de seconde voldoende is, wat geldt voor de meeste zakelijke gebeurtenissen. TIMESTAMP voegt fractionele seconden toe en neemt meer opslagruimte in beslag per rij in een grote tabel.

Ja. Door een bronbestand te profileren, worden de werkelijke waardebereiken, lengtes en formaten zichtbaar. Op basis hiervan stelt de AI voor elke kolom het kleinste veilige gegevenstype voor, in plaats van een defensief, te groot standaardtype.

Ja. Door de opgegeven lengtes te vergelijken met de daadwerkelijk opgeslagen waarden, worden kolommen zichtbaar die mogelijk kleiner worden. Dit is belangrijk omdat elke kolom van een HANA-tabel in het geheugen wordt opgeslagen.

TEXT, BINTEXT en SHORTTEXT bieden zoekfuncties voor tekst. Alle drie zijn beperkt tot tabellen met kolomopslag en kunnen niet worden gedefinieerd voor tabellen met rijopslag.

Vat dit bericht samen met: