SAP HANA adattípusok: numerikus, karakterlánc, tizedes

⚡ Okos összefoglaló

SAP A HANA adattípusok határozzák meg, hogy az egyes oszlopok mit tárolhatnak, beleértve a dátum-idő, numerikus, logikai, karakterlánc, bináris, nagy objektum és többértékű osztályozásokat, minden egyes leképezést.ping egy adott oszloptárolási típushoz.

  • ️ Dátum/Időpont típusok: A DATE, TIME, SECONDDATE és TIMESTAMP értékek a megőrzött pontosságban térnek el egymástól.
  • 🔢 Numerikus tartomány: A TINYINT-től a BIGINT-ig terjedő függvények egész számokat, míg a DECIMAL, SMALLDECIMAL, REAL és DOUBLE törteket kezelnek.
  • 🔤 Karakterláncok: A VARCHAR bájtokat, az NVARCHAR pedig Unicode karaktereket tárol, mindkettő 5000-re korlátozva.
  • 📦 Nagy tárgyak: A BLOB, CLOB, NCLOB, TEXT és BINTEXT oszlopok túl nagy adatmennyiséget tárolnak egy normál oszlophoz.
  • 🔍 Keresés engedélyezve: A TEXT, a BINTEXT és a SHORTTEXT támogatja a teljes szöveges keresést, de csak az oszloptároló táblákban.
  • ✍️ Azonosítók: Az elválasztott azonosítók idézőjelek között helyezkednek el, és bármilyen karaktert elfogadnak; a határtalan azonosítóknak betűvel kell kezdődniük.
  • ❝ Idézet szabálya: Az egyes idézőjelek elválasztják a karakterláncokat, a dupla idézőjelek pedig az azonosítókat.

SAP HANA adattípusok

Ebben SAP A HANA adattípusok oktatóanyagából megtanuljuk:

1) SAP HANA adattípusok - SAP A HANA adattípusok közé tartozik a dátum idő, a numerikus adattípus, a logikai érték, a karakterlánc, a bináris adattípusok stb.

2) SAP HANA azonosítók – Határozott azonosítók és határtalan azonosítók

Adattípusok be SAP HANNA

In SAP HANA adatbázis, SQL Az adattípusok a következők:

Osztályozás Alosztályozás SQL adattípus Oszloptároló típusa Alapértelmezett formátum
Dátum és idő típusai találka DÁTUM CS_DAYDATE "ÉÉÉÉ-HH-NN"
Time IDŐ CS_SECONDTIME "HH24:MI:SS"
Második randevú MÁSODIK DÁTUM CS_LONGDATE "ÉÉÉÉ-HH-NN HH24:MI:SS"
Időbélyeg IDŐBÉLYEG CS_SECONDDATE "ÉÉÉÉ-HH-NN HH24:MI:SS.FFn"
Numerikus típusok Apró egész szám TINYINT CS_INT 8 bites előjel nélküli egész szám, tartomány: 0–255
Kis egész szám KICSIK CS_INT 16 bites előjeles egész szám, tartomány: -9 223 372 036 854 775 808 és 9 223 372 036 854 775 807 között
Egész szám EGÉSZ SZÁM CS_INT 32 bites előjeles egész szám, tartomány: -9 223 372 036 854 775 808 és 9 223 372 036 854 775 807 között
Big Integer BIGINT CS_FIXED(18,0;XNUMX) 64 bites előjeles egész szám, tartomány: -9 223 372 036 854 775 808 és 9 223 372 036 854 775 807 között
Decimális DECIMÁLIS(p,s)
p-Precizitás
s- skála
CS_FIXED(ps,s) A p pontosság 1 és 38 között lehet.
Az s skála 0-tól p-ig terjedhet SAP HANA decimális adattípus.
Ha a pontosság és a lépték nincs megadva, a DECIMAL lebegőpontos decimális szám lesz.
Kis tizedes KISDECIMÁLIS CS_SDFLOAT Ez egy lebegőpontos decimális szám. A pontosság és a skála a precíziós 1-16, a skála -369-368 tartományon belül kell, hogy legyen, a tárolt értéktől függően. A SMALLDECIMAL csak oszloptároló táblázat esetén támogatott.
Valós szám IGAZI CS_FLOAT egyszeres pontosságú 32 bites lebegőpontos szám
Double Szám KETTŐS CS_DOUBLE dupla pontosságú 64 bites lebegőpontos szám
Úszó FLOAT(n) CS_DOUBLE Ez egy 32 bites vagy 64 bites valós szám. Ahol n a bitek számát jelöli, és 1 és 53 közötti tartományba kell esnie.
logikai logikai BOOLAI CS_INT IGAZ, HAMIS ÉS ISMERETLEN (NULL).
Karakter karakterlánc Változó hosszúságú karaktersorozat VARCHAR (n) CS_STRING Ez a HANA karakterlánchossz adattípus egy változó hosszúságú karakterlánc, ahol az „n” a maximális hosszt adja meg bájtban, és ez egy 1 és 5000 közötti egész szám.
Változó hosszúságú Unicode karakter NVARCHAR(n) CS_STRING Változó hosszúságú Unicode karakterkészlet, ahol a maximális hosszt jelzi karakterekben, és egy 1 és 5000 közötti egész szám
Alfa-numerikus karakter ALPHANUM(n) CS_ALPHANUM Változó hosszúságú alfanumerikus karakterek, ahol n a maximális hosszt jelöli, és egy 1 és 127 közötti egész szám
rövid szöveg RÖVIDSZÖVEG(n) CS_STRING Ez egy változó hosszúságú karakterlánc, amely szöveges és karakterlánc-keresési funkciókat biztosít. Ez az adattípus oszloptároló táblázatokhoz definiálható, sortároló táblázatokhoz nem.
Bináris típusok Bináris szöveg VARBINÁRIS(n) CS_RAW A megadott maximális hosszúságú bináris adatok tárolása bájtokban, ahol n a maximális hosszt jelöli, és egy 1 és 5000 közötti egész szám.
LOB-típusok (nagy objektumtípusok) Bináris LOB FOLT CS_RAW Nagy mennyiségű bináris adat
Karakter LOB CLOB CS_STRING ASCII karakteradatok
Unicode karakter LOB NCLOB CS_STRING Nagy Unicode karakteres objektum
TEXT TEXT CS_STRING A SZÖVEG adattípus szöveges keresési funkciókat biztosít. Ez az adattípus definiálható az oszloptároló táblákhoz, de nem a sortároló táblákhoz.
BINÁRIS szöveges adatok BINTEXT CS_STRING A BINTEXT adattípus hasonló a TEXT adattípushoz, így támogatja a szöveges keresési funkciókat, de lehetséges bináris adatok beszúrása. Ez az adattípus oszloptáblázatokhoz definiálható, sortáblázatokhoz viszont nem.
Többértékű típusok Sor SOR Azonos adattípusú értékek gyűjteményeit tárolja, ahol minden elem pontosan egy pozícióhoz kapcsolódik. A tömbök NULL értékeket tartalmazhatnak, mint érték hiányában.

A Jobb választása SAP HANA adattípus

A fenti táblázat felsorolja, mi áll rendelkezésre. A jó választás fontosabb a következőkben. SAP HANA-ban, mint egy lemez alapú adatbázisban, mivel minden oszlop a memóriában található, és egy túlméretezett típus minden sorban szűkös erőforrást fogyaszt.

Négy szabály vonatkozik a legtöbb döntésre:

  • Vegyük a legkisebb illeszkedő számtípust. Egy öt lehetséges értékkel rendelkező állapotjelzőhöz TINYINT, nem INTEGER szükséges. Egy milliárd soros táblázatban a különbséget gigabájt memóriában mérjük.
  • Soha ne tárolj pénzt VALÓDI vagy DUPLA PÉNZTÁRBAN. A lebegőpontos számok nem képesek pontosan decimális törteket ábrázolni, így az összegek a pénznem törtjeinek megfelelő mértékben változnak. Használjon DECIMAL függvényt explicit pontossággal és skálával.
  • Az NVARCHAR-t részesítsd előnyben a VARCHAR-ral szemben. A VARCHAR a bájtokat, az NVARCHAR pedig a karaktereket számolja, így minden nem ASCII szöveg váratlanul csonkolódik a VARCHAR-ban. Modern SAP A HANA kiadások pontosan emiatt kezelik a VARCHAR-t NVARCHAR-ként.
  • A dátum pontosságát illessze a követelményhez. A DATE egy naptári naphoz, a SECONDDATE ahol a napszak számít, és a TIMESTAMP csak ott, ahol valóban másodpercnél kisebb pontosságot használnak. Minden egyes lépés tárhelyet igényel minden sorban.

A nagy objektumtípusok különös figyelmet érdemelnek. A BLOB vagy NCLOB oszlop kényelmes, de nehézkes, és a TEXT vagy SHORTTEXT oszlopokban a szöveges keresés csak oszloptároló táblázatokon működik, így a tárolási választás és az adattípus kiválasztása összefügg. A tárolási lehetőségeket a következő részben tárgyaljuk: SAP HANA SQL tutorial.

SAP HANA azonosítók

Az azonosítók a név megjelenítésére szolgálnak SQL utasítás (pl. táblanév, nézetnév, oszlopnév, indexnév, szinonimnév, eljárásnév, függvénynév stb.)

Kétféle azonosító létezik SAP HANNA: Elválasztott azonosítók és Korlátlan azonosítók.

  • Elhatárolt azonosítók – Határolóba van zárva, Double Idézetek "". Az azonosító bármilyen karaktert tartalmazhat, beleértve a speciális karaktereket is.
  • Korlátlan azonosítók – A korlátlan azonosítóknak (táblanév, oszlopnév) betűvel kell kezdődniük, és nem tartalmazhatnak más szimbólumokat, mint egy számjegyet vagy egy aláhúzásjelet „_”.

Kétféle idézőjel van az elhatároláshoz, az alábbiak szerint

  • Egyetlen idézőjel ('') – A karakterlánc elhatárolására szolgál.
  • Double Idéző jel (" ")– Az azonosítók elválasztására szolgál.

⚠️ Figyelmeztetés: Egy korlátlan azonosító nagybetűsre konvertálódik az objektum létrehozásakor. Ha egy táblát alkalmazottként hoz létre, majd később kisbetűs „alkalmazott”-ként választ ki, az sikertelen, mivel a tárolt név ALKALMAZOTT. Vagy teljesen kerülje el a dupla idézőjeleket, vagy használja azokat következetesen.

Adattípus-konverzió és gyakori hibák

SAP A HANA automatikusan konvertál a kompatibilis típusok között, de az implicit konverzió a helytelen eredmények és a lassú lekérdezések csendes forrása. Az explicit konverzió láthatóvá teszi a szándékot.

Két függvény végzi el a munkát. A CAST egy értéket névvel ellátott típussá alakít, a TO_DATE, TO_VARCHAR, TO_DECIMAL és rokonaik pedig egy opcionális formázó karakterlánccal konvertálják.

-- 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;

Négy hiba okozza a legtöbb konverziós problémát:

  1. Numerikus túlcsordulás. A 40000 beszúrása egy SMALLINT függvénybe sikertelen, mert az előjeles tartomány 32 767-nél megáll. Az üzenet az oszlopot nevezi meg az érték helyett, ezért először ellenőrizze a definíciót.
  2. Karakterlánc csonkítása. A deklarált hosszúságnál hosszabb szöveg betöltése hibát okoz ahelyett, hogy csendben elvágná azt. Számolja a karaktereket az NVARCHAR, a bájtokat pedig a VARCHAR függvényében.
  3. Érvénytelen dátumformátum. A TO_DATE függvénynek átadott karakterlánc hibás mintázatú átadása. Mindig a formátummaszkot kell megadni a munkamenet alapértelmezett értékének használata helyett.
  4. Implicit konverzió egy WHERE záradékban. Egy karakteres oszlop és egy szám összehasonlítása minden sorban konverziót kényszerít ki, ami megakadályozza a hatékony szűrést. Az oszlop helyett az állandót kell konvertálni.

Az ezekben a szűrőkben használt összehasonlító szimbólumokat a következő részben tárgyaljuk: SAP HANA operátorok, és a szélesebb platform a SAP HANA oktatóanyag sorozat.

GYIK

A VARCHAR bájtokban, az NVARCHAR pedig Unicode karakterekben méri a korlátját. Bármely olyan szöveg esetén, amely nem ASCII karaktereket tartalmazhat, az NVARCHAR a biztonságos választás, mivel nem fog váratlanul csonkolódni.

A SECONDDATE függvényt akkor használja, ha a második szintű pontosság is elegendő, ami a legtöbb üzleti eseményt lefedi. A TIMESTAMP függvény tört másodperceket ad hozzá, és több tárhelyet igényel egy nagy táblázat minden sorában.

Igen. A forrásfájl profilalkotása feltárja a tényleges értéktartományokat, hosszúságokat és formátumokat, amelyekből a mesterséges intelligencia minden oszlophoz a legkisebb biztonságos típust javasolja egy védekező, túlméretezett alapértelmezett helyett.

Igen. A deklarált hosszúságok és a ténylegesen tárolt értékek összehasonlítása kiemeli azokat az oszlopokat, amelyek zsugorodhatnak, ami azért fontos, mert egy HANA-tábla minden oszlopa a memóriában tárolódik.

A TEXT, a BINTEXT és a SHORTTEXT szöveges keresési funkciókat biztosít. Mindhárom oszloptároló táblázatokra korlátozódik, és nem definiálhatók sortároló táblázatban.

Foglald össze ezt a bejegyzést a következőképpen: