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.

  • Dato- og tidstyper: DATO, TIDSPUNKT, SEKUNDDATO og TIDSTEMPEL adskiller sig ved den præcision, de bevarer.
  • 🔢 Numerisk område: TINYINT til BIGINT dækker heltal, mens DECIMAL, SMALLDECIMAL, REAL og DOUBLE håndterer brøker.
  • 🔤 Tegnstrenge: VARCHAR indeholder bytes, og NVARCHAR indeholder Unicode-tegn, begge begrænset til 5000.
  • 📦 Store genstande: BLOB, CLOB, NCLOB, TEXT og BINTEXT gemmer data, der er for store til en normal kolonne.
  • 🔍 Søgning aktiveret: TEKST, BINTEKST og KORTTEKSTEN understøtter fuldtekstsøgning, men kun i kolonnelagringstabeller.
  • ✍️ Identifikatorer: Afgrænsede identifikatorer sidder i dobbelte anførselstegn og accepterer ethvert tegn; ubegrænsede identifikatorer skal starte med et bogstav.
  • Citatregel: Enkelte anførselstegn afgrænser en strengværdi, og dobbelte anførselstegn afgrænser en identifikator.

SAP HANA-datatyper

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:

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

Ofte Stillede Spørgsmål

VARCHAR måler sin grænse i bytes og NVARCHAR i Unicode-tegn. For tekst, der kan indeholde ikke-ASCII-tegn, er NVARCHAR det sikre valg, fordi den ikke vil blive afkortet uventet.

Brug SECONDDATE, når præcision på andet niveau er tilstrækkelig, hvilket dækker de fleste forretningshændelser. TIMESTAMP tilføjer brøkdele af sekunder og koster mere lagerplads på hver række i en stor tabel.

Ja. Profilering af en kildefil afslører faktiske værdiintervaller, længder og formater, hvorfra AI foreslår den mindste sikre type for hver kolonne i stedet for en defensiv overdimensioneret standard.

Ja. Sammenligning af deklarerede længder med faktisk gemte værdier fremhæver kolonner, der kan krympe, hvilket er vigtigt, fordi hver kolonne i en HANA-tabel gemmes i hukommelsen.

TEKST, BINTEKST og KORTTEKSTEN tilbyder tekstsøgningsfunktioner. Alle tre er begrænset til kolonnelagringstabeller og kan ikke defineres på en rækkelagringstabel.

Opsummer dette indlæg med: