SAP Typy danych HANA: numeryczne, ciąg znaków, dziesiętne
⚡ Inteligentne podsumowanie
SAP Typy danych HANA definiują, co może przechowywać każda kolumna, obejmując klasyfikacje daty, czasu, wartości liczbowe, wartości logiczne, ciągi znaków, dane binarne, duże obiekty i wielowartościowe, każda mapaping do określonego typu magazynu kolumn.

W tym SAP W samouczku dotyczącym typów danych HANA dowiemy się:
1) SAP Typy danych HANA - SAP Typy danych HANA obejmują datę i godzinę, numeryczny typ danych, wartość logiczną, ciąg znaków, binarne typy danych itp.
2) SAP Identyfikatory HANA – Identyfikatory rozdzielane i identyfikatory nieograniczane
Typy danych w SAP HANA
In SAP baza danych HANA, SQL Typy danych są następujące:
| Klasyfikacja | Podklasyfikacja | Typ danych SQL | Typ magazynu kolumnowego | Domyślny format |
|---|---|---|---|---|
| Typy dat i godzin | Data | DATA | CS_DAYDATE | „RRRR-MM-DD” |
| Czas | CZAS | CS_SECONDTIME | „HH24:MI:SS” | |
| Druga data | DRUGA DATA | CS_LONGDATE | „RRRR-MM-DD HH24:MI:SS” | |
| Znak czasu | ZNAK CZASU | CS_SECONDDATE | „RRRR-MM-DD HH24:MI:SS.FFn” | |
| Typy numeryczne | Mała liczba całkowita | MAŁYINT | CS_INT | 8-bitowa liczba całkowita bez znaku, zakres od 0 do 255 |
| Mała liczba całkowita | MAŁE | CS_INT | 16-bitowa liczba całkowita ze znakiem, zakres od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807 | |
| Liczba całkowita | LICZBA CAŁKOWITA | CS_INT | 32-bitowa liczba całkowita ze znakiem, zakres od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807 | |
| Duża liczba całkowita | DUŻE | CS_FIXED(18,0) | 64-bitowa liczba całkowita ze znakiem, zakres od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807 | |
| Dziesiętny | DZIESIĘTNE(p,s) p-Precyzja skala s |
CS_FIXED(ps,s) | Precyzja p może wynosić od 1 do 38. Skala s może wynosić od 0 do p dla SAP Dziesiętny typ danych HANA. Jeśli nie określono precyzji i skali, DECIMAL staje się liczbą dziesiętną zmiennoprzecinkową. |
|
| Mały dziesiętny | MAŁY DZIESIĘTNY | CS_SDFLOAT | Jest to zmiennoprzecinkowa liczba dziesiętna. Precyzja i skala powinny mieścić się w zakresie 1~16 dla precyzji i -369~368 dla skali, w zależności od zapisanej wartości. SMALLDECIMAL jest obsługiwany tylko w przypadku tabeli magazynu kolumn. | |
| Prawdziwy numer | Niezależne | CS_FLOAT | 32-bitowa liczba zmiennoprzecinkowa o pojedynczej precyzji | |
| Double Numer | PODWÓJNIE | Podwójny | liczba zmiennoprzecinkowa 64-bitowa o podwójnej precyzji | |
| pływak | zmiennoprzecinkowy(n) | Podwójny | Jest to 32- lub 64-bitowa liczba rzeczywista. Gdzie n określa liczbę bitów i powinno mieścić się w zakresie od 1 do 53. | |
| Boolean | Boolean | BOOLEAN | CS_INT | PRAWDA, FAŁSZ I NIEZNANE (NULL). |
| Łańcuch znaków | Ciąg znaków o zmiennej długości | VARCHAR (n) | CS_STRING | Ten typ danych długości ciągu HANA to ciąg znaków o zmiennej długości, gdzie „n” określa maksymalną długość w bajtach i jest liczbą całkowitą z przedziału od 1 do 5000. |
| Znak Unicode o zmiennej długości | NVARCHAR(n) | CS_STRING | Ciąg znaków Unicode o zmiennej długości, gdzie wskazuje maksymalną długość w znakach i jest liczbą całkowitą z zakresu od 1 do 5000 | |
| Znak alfanumeryczny | ALFANUM(n) | CS_ALPHANUM | Znaki alfanumeryczne o zmiennej długości, gdzie n oznacza maksymalną długość i jest liczbą całkowitą z zakresu od 1 do 127 | |
| Krótki tekst | KRÓTKI TEKST(n) | CS_STRING | Jest to ciąg znaków o zmiennej długości, który umożliwia wyszukiwanie tekstu i ciągów znaków. Ten typ danych można zdefiniować dla tabel przechowujących kolumny, ale nie dla tabel wierszy. | |
| Typy binarne | Tekst binarny | WARBINALNIK(n) | CS_RAW | Przechowuj dane binarne o określonej maksymalnej długości w bajtach, gdzie n oznacza maksymalną długość i jest liczbą całkowitą z zakresu od 1 do 5000. |
| Typy LOB (typy dużych obiektów) | Binarny LOB | KROPELKA | CS_RAW | Duże ilości danych binarnych |
| Charakter LOB-a | KLOB | CS_STRING | Dane znakowe ASCII | |
| Znak Unicode LOB | NCLOB | CS_STRING | Duży obiekt znakowy Unicode | |
| TEKST | TEKST | CS_STRING | Typ danych TEXT udostępnia funkcje wyszukiwania tekstowego. Ten typ danych można zdefiniować dla tabel kolumnowych, ale nie dla tabel zawierających wiersze. | |
| Dane tekstowe BINARNE | BINTEKST | CS_STRING | Typ danych BINTEXT jest podobny do typu danych TEXT i dlatego obsługuje funkcje wyszukiwania tekstowego, ale możliwe jest wstawianie danych binarnych. Ten typ danych można zdefiniować dla tabel kolumnowych, ale nie dla tabel wierszowych. | |
| Typy wielowartościowe | Szyk | SZYK | Przechowuje kolekcje wartości tego samego typu danych, gdzie każdy element jest powiązany z dokładnie jedną pozycją. Tablice mogą zawierać wartości NULL, tak jak w przypadku braku wartości. |
Wybór właściwego SAP Typ danych HANA
W powyższej tabeli wymieniono dostępne opcje. Właściwy wybór ma większe znaczenie w SAP HANA jest bardziej wydajna niż baza danych na dysku, ponieważ każda kolumna znajduje się w pamięci, a zbyt duży typ zużywa ograniczone zasoby w każdym wierszu.
Większość decyzji opiera się na czterech zasadach:
- Wybierz najmniejszy pasujący typ liczbowy. Flaga stanu z pięcioma możliwymi wartościami wymaga wartości TINYINT, a nie INTEGER. W tabeli o miliardzie wierszy różnica jest mierzona w gigabajtach pamięci.
- Nigdy nie przechowuj PRAWDZIWYCH lub PODWÓJNYCH pieniędzy. Liczba zmiennoprzecinkowa nie może dokładnie reprezentować ułamków dziesiętnych, więc sumy różnią się o ułamki jednostki walutowej. Używaj funkcji DECIMAL z określoną precyzją i skalą.
- Wolę NVARCHAR od VARCHAR. VARCHAR zlicza bajty, a NVARCHAR znaki, więc każdy tekst spoza zakresu ASCII jest nieoczekiwanie obcinany w VARCHAR. SAP Wersje HANA traktują VARCHAR jako NVARCHAR właśnie z tego powodu.
- Dopasuj dokładność daty do wymagania. DATE dla dnia kalendarzowego, SECONDDATE, gdy liczy się pora dnia, i TIMESTAMP tylko wtedy, gdy precyzja jest rzeczywiście mniejsza niż sekunda. Każde przekroczenie limitu pamięci powoduje zwiększenie pojemności każdego wiersza.
Duże typy obiektów wymagają szczególnej ostrożności. Kolumna BLOB lub NCLOB jest wygodna, ale ciężka, a wyszukiwanie tekstowe w TEXT lub SHORTTEXT działa tylko w tabelach magazynu kolumn, więc wybór pamięci masowej i wybór typu danych są powiązane. Opcje pamięci masowej omówiono w SAP HANA SQL poradnik.
SAP Identyfikatory HANA
Identyfikatory służą do reprezentowania nazwy w SQL instrukcja (np. nazwa tabeli, nazwa widoku, nazwa kolumny, nazwa indeksu, nazwa synonimu, nazwa procedury, nazwa funkcji itp.)
Istnieją dwa rodzaje identyfikatorów SAP HANA: Identyfikatory rozdzielone i Identyfikatory nieograniczone.
- Rozdzielane identyfikatory – jest ujęte w ograniczniku, Double Cytaty "". Identyfikator może zawierać dowolny znak, w tym znak specjalny.
- Nieograniczone identyfikatory – Identyfikatory nierozgraniczone (nazwa tabeli, nazwa kolumny) muszą zaczynać się od litery i nie mogą zawierać żadnych innych symboli niż cyfra lub znak podkreślenia „_”.
Istnieją dwa rodzaje cudzysłowu jako ogranicznika, jak poniżej:
- Pojedynczy cudzysłów („”) – Służy do oddzielania ciągu znaków.
- Double Cudzysłów (" ")– Służy do rozdzielania identyfikatorów.
⚠️ Ostrzeżenie: Nieograniczony identyfikator jest konwertowany na wielkie litery podczas tworzenia obiektu. Utworzenie tabeli jako „pracownik”, a następnie wybranie słowa „pracownik” małymi literami kończy się niepowodzeniem, ponieważ zapisana nazwa to PRACOWNIK. Należy całkowicie unikać cudzysłowów lub stosować je konsekwentnie.
Konwersja typów danych i typowe błędy
SAP HANA automatycznie konwertuje między zgodnymi typami, ale konwersja niejawna jest cichym źródłem błędnych wyników i powolnych zapytań. Konwersja jawna uwidacznia intencję.
Za konwersję odpowiadają dwie funkcje. CAST konwertuje wartość na typ nazwany, a TO_DATE, TO_VARCHAR, TO_DECIMAL i ich odpowiedniki konwertują przy użyciu opcjonalnego ciągu formatującego.
-- 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;
Za większość problemów z konwersją odpowiadają cztery błędy:
- Przepełnienie numeryczne. Wstawienie 40000 do funkcji SMALLINT kończy się niepowodzeniem, ponieważ zakres ze znakiem kończy się na 32 767. Komunikat podaje nazwę kolumny, a nie jej wartość, dlatego najpierw sprawdź definicję.
- Obcinanie ciągu znaków. Wczytanie tekstu dłuższego niż zadeklarowana długość powoduje błąd, zamiast go bezgłośnie skrócić. Zliczaj znaki względem NVARCHAR i bajty względem VARCHAR.
- Nieprawidłowy format daty. Przekazanie ciągu znaków w niewłaściwym wzorcu do TO_DATE kończy się niepowodzeniem. Zawsze podawaj maskę formatu, zamiast polegać na domyślnej wartości sesji.
- Konwersja niejawna w klauzuli WHERE. Porównanie kolumny ze znakiem i liczbą wymusza konwersję w każdym wierszu, co uniemożliwia efektywne filtrowanie. Konwertuj stałą zamiast kolumny.
Symbole porównania używane w tych filtrach są omówione w SAP Operatorzy HANAi szerszą platformę w SAP Samouczek HANA series.
