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.

  • 🗓️. Typy daty i godziny: Parametry DATE, TIME, SECONDDATE i TIMESTAMP różnią się precyzją, jaką zachowują.
  • 🔢 Zakres liczbowy: TINYINT do BIGINT obsługują liczby całkowite, natomiast DECIMAL, SMALLDECIMAL, REAL i DOUBLE obsługują ułamki.
  • 🔤 Ciągi znaków: VARCHAR przechowuje bajty, a NVARCHAR znaki Unicode. W obu przypadkach limit wynosi 5000.
  • 📦 Duże Obiekty: BLOB, CLOB, NCLOB, TEXT i BINTEXT przechowują dane zbyt duże dla normalnej kolumny.
  • 🔍 Wyszukiwanie włączone: Funkcje TEXT, BINTEXT i SHORTTEXT obsługują wyszukiwanie pełnotekstowe, ale tylko w tabelach przechowujących kolumny.
  • ✍️. Identyfikatory: Identyfikatory rozdzielone umieszczane są w cudzysłowie i mogą zawierać dowolne znaki; identyfikatory bez ograniczników muszą zaczynać się od litery.
  • Zasada cytowania: Pojedyncze cudzysłowy ograniczają wartość ciągu, a podwójne cudzysłowy ograniczają identyfikator.

SAP Typy danych HANA

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:

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

FAQ

VARCHAR mierzy swój limit w bajtach, a NVARCHAR w znakach Unicode. W przypadku tekstu zawierającego znaki spoza ASCII, NVARCHAR jest bezpiecznym wyborem, ponieważ nie spowoduje nieoczekiwanego obcięcia.

Użyj SECONDDATE, gdy precyzja drugiego poziomu jest wystarczająca, co obejmuje większość zdarzeń biznesowych. TIMESTAMP dodaje ułamki sekund i zajmuje więcej miejsca w każdym wierszu dużej tabeli.

Tak. Profilowanie pliku źródłowego ujawnia rzeczywiste zakresy wartości, długości i formaty, na podstawie których AI proponuje najmniejszy bezpieczny typ dla każdej kolumny zamiast defensywnego, przewymiarowanego typu domyślnego.

Tak. Porównanie zadeklarowanych długości z wartościami faktycznie przechowywanymi wyróżnia kolumny, które mogłyby się zmniejszyć, co jest istotne, ponieważ każda kolumna tabeli HANA jest przechowywana w pamięci.

TEXT, BINTEXT i SHORTTEXT udostępniają funkcje wyszukiwania tekstowego. Wszystkie trzy są ograniczone do tabel przechowujących kolumny i nie można ich zdefiniować w tabeli przechowującej wiersze.

Podsumuj ten post następująco: