SAP HANA-datatyper: Numerisk, tegnstreng, decimal
⚡ Smart opsummering
SAP HANA-datatyper definerer, hvad hver kolonne kan gemme, og dækker dato- og klokkeslæt, numeriske værdier, booleske værdier, tegnstrenge, binære værdier, store objekter og flerværdiklassifikationer. Hvert kortping til en bestemt kolonnelagertype.
I denne SAP HANA Data Types tutorial, vi lærer:
1) SAP HANA datatyper - SAP HANA-datatyper inkluderer datotider, numerisk datatype, boolesk, tegnstreng, binære datatyper osv.
2) SAP HANA-identifikatorer – Afgrænsede identifikatorer og uafgrænsede identifikatorer
Datatyper ind SAP HANA
In SAP HANA Database, SQL Datatyperne er som nedenfor:
| Klassifikation | Underklassifikation | SQL datatype | Kolonne Butikstype | Standardformat |
|---|---|---|---|---|
| Dato Tidstyper | Dato | INFORMATION | CS_DAYDATE | 'ÅÅÅÅ-MM-DD' |
| Tid | TIME | CS_SECONDTIME | 'HH24:MI:SS' | |
| Anden date | ANDEN DATO | CS_LONGDATE | 'ÅÅÅÅ-MM-DD TT24:MI:SS' | |
| Tidsstempel | TIDSSTEMPEL | CS_SECONDDATE | 'ÅÅÅÅ-MM-DD TT24:MI:SS.FFn' | |
| Numeriske typer | Lille heltal | TINYINT | CS_INT | 8-bit usigneret heltal, område 0 til 255 |
| Lille heltal | SMALLINT | CS_INT | 16-bit heltal med fortegn, område -32,768 til 32,767 | |
| Integer | HELTAL | CS_INT | 32-bit heltal med fortegn, område -2,147,483,648 til 2,147,483,647 | |
| Stort heltal | STORT | CS_FIXED(18,0) | 64-bit heltal med fortegn, område -9,223,372,036,854,775,808 til 9,223,372,036,854,775,807 | |
| Decimal | DECIMAL(p;s) p-præcision s- skala |
CS_FIXED(ps,s) | Præcision p kan variere fra 1 til 38. Skalaen s kan variere fra 0 til p for SAP HANA decimal datatype. Hvis præcision og skala ikke er angivet, bliver DECIMAL til et flydende decimaltal. |
|
| Lille decimal | SMALLDECIMAL | CS_SDFLOAT | Det er et flydende decimaltal. Præcisionen og skalaen skal være inden for området 1~16 for præcision og -369~368 for skala, afhængigt af den lagrede værdi. SMALLDECIMAL understøttes kun for kolonnelagertabel. | |
| Reelt tal | ÆGTE | CS_FLOAT | enkelt-præcision 32-bit flydende decimaltal | |
| Double nummer | DOBBELT | CS_DOUBLE | et 64-bit floating-point tal med dobbelt præcision | |
| Flyde | FLYDE(n) | CS_DOUBLE | Det er et 32-bit eller 64-bit reelt tal. Hvor n angiver antallet af bits og skal ligge i området mellem 1 og 53. | |
| Boolesk | Boolesk | BOOLESK | CS_INT | SAND, FALSK OG UKENDT (NULL). |
| Karakterstreng | Tegnstreng med variabel længde | VARCHAR (n) | CS_STRING | Denne HANA-strenglængdedatatype er en tegnstreng med variabel længde, hvor 'n' angiver den maksimale længde i bytes, og dette er et heltal mellem 1 og 5000. |
| Unicode-tegn med variabel længde | NVARCHAR(n) | CS_STRING | Unicode-tegnsætstreng med variabel længde, hvor angiver den maksimale længde i tegn og er et heltal mellem 1 og 5000 | |
| Alfanumerisk tegn | ALFANUM(n) | CS_ALPHANUM | Alfanumeriske tegn med variabel længde, hvor n angiver den maksimale længde og er et heltal mellem 1 og 127 | |
| Kort tekst | KORTTEKST(n) | CS_STRING | Det er en tegnstreng med variabel længde, der tilbyder tekstsøgning og strengsøgningsfunktioner. Denne datatype kan defineres for kolonnelagringstabeller, men ikke for rækketabeller. | |
| Binære typer | Binær tekst | VARBINARY(n) | CS_RAW | Gem binære data med en specificeret maksimal længde i bytes, hvor n angiver den maksimale længde og er et heltal mellem 1 og 5000. |
| LOB-typer (store objekttyper) | Binær LOB | Blob | CS_RAW | Store mængder binære data |
| Karakter LOB | KLUB | CS_STRING | ASCII-tegndata | |
| Unicode-tegn LOB | NCLOB | CS_STRING | Stort Unicode-tegnobjekt | |
| TEKST | TEKST | CS_STRING | TEXT-datatypen giver tekstsøgningsfunktioner. Denne datatype kan defineres for kolonne Store-tabeller, men ikke for rækkelagertabeller. | |
| BINÆRE tekstdata | BINTEXT | CS_STRING | BINTEXT-datatypen ligner datatypen TEXT og understøtter således tekstsøgningsfunktioner, men det er muligt at indsætte binære data. Denne datatype kan defineres for kolonnetabeller, men ikke for rækketabeller. | |
| Typer med flere værdier | Array | ARRA | Det gemmer samlinger af værdier af samme datatype, hvor hvert element er relateret til nøjagtig én position. Arrays kan indeholde NULL-værdier som i fravær af en værdi. |
Valg af det rigtige SAP HANA-datatype
Tabellen ovenfor viser, hvad der er tilgængeligt. Det er vigtigere at vælge klogt. SAP HANA end i en diskbaseret database, fordi hver kolonne findes i hukommelsen, og en overdimensioneret type forbruger en knappe ressource på hver række.
Fire regler dækker de fleste beslutninger:
- Tag den mindste numeriske type, der passer. Et statusflag med fem mulige værdier kræver TINYINT, ikke INTEGER. På tværs af en tabel med en milliard rækker måles forskellen i gigabyte hukommelse.
- Opbevar aldrig penge i RIGTIGE eller DOBBELT. Flydende komma kan ikke repræsentere decimalbrøker præcist, så totaler afviger med brøker af en valutaenhed. Brug DECIMAL med en eksplicit præcision og skala.
- Foretræk NVARCHAR frem for VARCHAR. VARCHAR tæller bytes og NVARCHAR tæller tegn, så enhver ikke-ASCII-tekst afkortes uventet i VARCHAR. Moderne SAP HANA-udgivelser behandler VARCHAR som NVARCHAR af netop denne grund.
- Match datopræcisionen med kravet. DATE for en kalenderdag, SECONDDATE hvor tidspunktet på dagen er vigtigt, og TIMESTAMP kun hvor præcision under et sekund reelt bruges. Hvert trin op koster lagerplads på hver række.
Store objekttyper kræver særlig forsigtighed. En BLOB- eller NCLOB-kolonne er praktisk, men tung, og tekstsøgning på TEXT eller SHORTTEXT fungerer kun på kolonnelagringstabeller, så lagringsvalget og datatypevalget er forbundet. Lagringsmuligheder er dækket i SAP HANA SQL tutorial.
SAP HANA-identifikatorer
Identifikatorer bruges til at repræsentere navn i SQL sætning (f.eks. tabelnavn, visningsnavn, kolonnenavn, indeksnavn, synonymnavn, procedurenavn, funktionsnavn osv.)
Der er to typer identifikatorer i SAP HANA: Afgrænsede identifikatorer og Uafgrænsede identifikatorer.
- Afgrænsede identifikatorer – Det er indeholdt i afgrænsningen, Double Citater "". Identifikationen kan indeholde et hvilket som helst tegn inklusive specialtegn.
- Ubegrænsede identifikatorer – Ubegrænsede identifikatorer (tabelnavn, kolonnenavn) skal starte med et bogstav og må ikke indeholde andre symboler end et ciffer eller en understregning '_'.
Der er to typer anførselstegn for afgrænsning som nedenfor-
- Enkelt anførselstegn (' ') – Det bruges til at afgrænse strengen.
- Double Spørgsmålstegn (" ")– Det bruges til at afgrænse identifikatorer.
⚠️ Advarsel: En ubegrænset identifikator konverteres til store bogstaver, når objektet oprettes. Oprettelse af en tabel som medarbejder og senere valg af "medarbejder" med små bogstaver mislykkes, fordi det gemte navn er MEDARBEJDER. Undgå enten dobbelte anførselstegn helt, eller brug dem konsekvent.
Datatypekonvertering og almindelige fejl
SAP HANA konverterer automatisk mellem kompatible typer, men implicit konvertering er den stille kilde til forkerte resultater og langsomme forespørgsler. Eksplicit konvertering gør intentionen synlig.
To funktioner udfører arbejdet. CAST konverterer en værdi til en navngiven type, og TO_DATE, TO_VARCHAR, TO_DECIMAL og deres relaterede funktioner konverterer med en valgfri formatstreng.
-- 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;
Fire fejl er årsag til de fleste konverteringsproblemer:
- Numerisk overløb. Indsættelse af 40000 i en SMALLINT mislykkes, fordi det fortegnede område stopper ved 32,767. Meddelelsen navngiver kolonnen i stedet for værdien, så tjek definitionen først.
- Strengafkortning. Indlæsning af tekst, der er længere end den angivne længde, forårsager en fejl i stedet for at klippe den lydløst. Tæl tegn mod NVARCHAR og bytes mod VARCHAR.
- Ugyldigt datoformat. Det mislykkes at sende en streng i det forkerte mønster til TO_DATE. Angiv altid formatmasken i stedet for at stole på sessionens standardværdi.
- Implicit konvertering i en WHERE-klausul. Sammenligning af en tegnkolonne med et tal tvinger en konvertering frem på hver række, hvilket forhindrer effektiv filtrering. Konverter konstanten i stedet for kolonnen.
Sammenligningssymbolerne, der bruges i disse filtre, er dækket i SAP HANA-operatørerog den bredere platform i SAP HANA-vejledning serien.

