SAP Типи даних HANA: числові, символьні, десяткові
⚡ Розумний підсумок
SAP Типи даних HANA визначають, що може зберігати кожен стовпець, охоплюючи класифікації дати та часу, числові, логічні, символьні рядки, двійкові, великі об'єкти та багатозначні, кожна картаping до певного типу сховища стовпців.

В цьому SAP Навчальний посібник із типів даних HANA, ми дізнаємося:
1) SAP Типи даних HANA - SAP Типи даних HANA включають дату, час, числовий тип даних, логічний тип, рядок символів, двійкові типи даних тощо.
2) SAP Ідентифікатори HANA – Розмежовані ідентифікатори та нерозмежовані ідентифікатори
Типи даних в SAP ХАНА
In SAP База даних HANA, SQL Нижче наведені типи даних:
| Класифікація | Підкласифікація | Тип даних SQL | Тип магазину колонок | Формат за замовчуванням |
|---|---|---|---|---|
| Типи дати і часу | Дата | ДАТА ПРОВЕДЕННЯ | CS_DAYDATE | "РРРР-ММ-ДД" |
| Time | ЧАС | CS_SECONDTIME | "HH24:MI:SS" | |
| Друге побачення | ДРУГА ДАТА | CS_LONGDATE | "РРРР-ММ-ДД ГГ24:МІ:СС" | |
| Часовий штамп | ГРАФІК | CS_SECONDDATE | "РРРР-ММ-ДД HH24:MI:SS.FFn" | |
| Числові типи | Крихітне ціле число | TINYINT | CS_INT | 8-бітове беззнакове ціле число, діапазон від 0 до 255 |
| Мале ціле число | СМАЛІНТ | CS_INT | 16-бітове ціле число зі знаком, діапазон від -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 | |
| Ціле число | INTEGER | CS_INT | 32-бітове ціле число зі знаком, діапазон від -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 | |
| Велике ціле число | ВЕЛИКИЙ | CS_FIXED(18,0) | 64-бітове ціле число зі знаком, діапазон від -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 | |
| Десятковий | DECIMAL(p,s) р-точність s- масштаб |
CS_FIXED(ps,s) | Точність p може коливатися від 1 до 38. Шкала s може коливатися від 0 до p SAP Десятковий тип даних HANA. Якщо точність і масштаб не вказано, DECIMAL стає десятковим числом із плаваючою комою. |
|
| Малий десятковий | МАЛИЙ ДЕСЯТКОВИЙ | CS_SDFLOAT | Це десяткове число з плаваючою комою. Точність і масштаб мають бути в діапазоні 1~16 для точності та -369~368 для масштабу залежно від збереженого значення. SMALLDECIMAL підтримується лише для таблиці зберігання стовпців. | |
| Реальне число | НЕРУХОМІСТЬ | CS_FLOAT | 32-розрядне число з плаваючою комою одинарної точності | |
| Double Номер | ПОДВІЙНИЙ | CS_DOUBLE | 64-розрядне число з плаваючою комою подвійної точності | |
| Поплавок | FLOAT(n) | CS_DOUBLE | Це 32-бітове або 64-бітове дійсне число. Де n визначає кількість бітів і має бути в діапазоні від 1 до 53. | |
| Boolean | Boolean | BOOLEAN | CS_INT | ІСТИНА, НЕПРАВДА І НЕВІДОМО (НУЛЬ). |
| Символьний рядок | Рядок символів змінної довжини | VARCHAR (n) | CS_STRING | Цей тип даних довжини рядка HANA є рядком символів змінної довжини, де 'n' визначає максимальну довжину в байтах, а це ціле число від 1 до 5000. |
| Символ Unicode змінної довжини | NVARCHAR(n) | CS_STRING | Рядок набору символів Unicode змінної довжини, де вказує максимальну довжину в символах і є цілим числом від 1 до 5000 | |
| Алфавітно-цифровий символ | АЛФАНАМ (n) | CS_ALPHANUM | Буквено-цифрові символи змінної довжини, де n означає максимальну довжину та є цілим числом від 1 до 127 | |
| Короткий текст | КОРОТКИЙ ТЕКСТ(n) | CS_STRING | Це рядок символів змінної довжини, який забезпечує функції текстового та рядкового пошуку. Цей тип даних можна визначити для таблиць сховища стовпців, але не для таблиць рядків. | |
| Двійкові типи | Двійковий текст | VARBINARY(n) | CS_RAW | Зберігайте двійкові дані заданої максимальної довжини в байтах, де n означає максимальну довжину та є цілим числом від 1 до 5000. |
| Типи LOB (типи великих об'єктів) | Бінарний LOB | ЛИСТОК | CS_RAW | Великі обсяги двійкових даних |
| LOB персонажа | КЛОБ | CS_STRING | Дані символів ASCII | |
| LOB символів Unicode | NCLOB | CS_STRING | Великий символьний об’єкт Unicode | |
| TEXT | TEXT | CS_STRING | Тип даних TEXT забезпечує функції текстового пошуку. Цей тип даних можна визначити для таблиць зберігання стовпців, але не для таблиць зберігання рядків. | |
| БІНАРНІ текстові дані | BINTEXT | CS_STRING | Тип даних BINTEXT подібний до типу даних TEXT і тому підтримує функції текстового пошуку, але можна вставляти двійкові дані. Цей тип даних можна визначити для таблиць стовпців, але не для таблиць рядків. | |
| Багатозначні типи | масив | МАСІВ | Він зберігає колекції значень одного типу даних, де кожен елемент пов’язаний точно з однією позицією. Масиви можуть містити значення NULL, як і за відсутності значення. |
Вибір правильного SAP Тип даних HANA
У таблиці вище перелічено доступні варіанти. Правильний вибір має більше значення в SAP HANA, ніж у дисковій базі даних, оскільки кожен стовпець знаходиться в пам'яті, а занадто великий тип споживає обмежений ресурс у кожному рядку.
Чотири правила охоплюють більшість рішень:
- Візьмемо найменший числовий тип, який підходить. Прапорець стану з п'ятьма можливими значеннями потребує TINYINT, а не INTEGER. У таблиці з мільярдом рядків різниця вимірюється в гігабайтах пам'яті.
- Ніколи не зберігайте гроші в РЕАЛАХ або ПОДВІЙНИХ валютах. Числа з плаваючою комою не можуть точно представляти десяткові дроби, тому підсумки зміщуються на частки грошової одиниці. Використовуйте DECIMAL з явною точністю та масштабом.
- Надавати перевагу NVARCHAR замість VARCHAR. VARCHAR рахує байти, а NVARCHAR рахує символи, тому будь-який текст, що не є ASCII, несподівано обрізається у VARCHAR. Сучасний SAP Релізи HANA трактують VARCHAR як NVARCHAR саме з цієї причини.
- Зіставте точність дати з вимогою. DATE для календарного дня, SECONDDATE, де час доби має значення, і TIMESTAMP лише там, де дійсно використовується точність, менша за секунду. Кожен крок вгору вимагає місця для зберігання кожного рядка.
Великі типи об'єктів заслуговують на особливу обережність. Стовпець BLOB або NCLOB зручний, але важкий, а текстовий пошук за запитом TEXT або SHORTTEXT працює лише для таблиць сховищ стовпців, тому вибір сховища та вибір типу даних пов'язані. Варіанти сховища розглядаються в SAP HANA SQL навчальний посібник.
SAP Ідентифікатори HANA
Ідентифікатори використовуються для представлення імені в SQL оператор (наприклад, ім’я таблиці, ім’я перегляду, ім’я стовпця, ім’я індексу, ім’я синоніму, ім’я процедури, ім’я функції тощо)
Існує два типи ідентифікаторів SAP ХАНА: Ідентифікатори з роздільниками та Нерозмежовані ідентифікатори.
- Розмежовані ідентифікатори – Він укладений у роздільник, Double Лапки “”. Ідентифікатор може містити будь-який символ, включаючи спеціальні.
- Нерозмежовані ідентифікатори – Нерозмежовані ідентифікатори (ім’я таблиці, ім’я стовпця) мають починатися з літери та не можуть містити жодних символів, крім цифри або підкреслення «_».
Існує два типи лапок для розділення, як показано нижче:
- Одинарні лапки (' ') – Використовується для розмежування рядка.
- Double Лапки (" ")– Використовується для розмежування ідентифікаторів.
⚠️ Попередження: Необмежений ідентифікатор перетворюється на верхній регістр під час створення об'єкта. Створення таблиці від імені співробітника та подальший вибір «співробітник» у нижньому регістрі не вдається, оскільки збережене ім'я — EMPLOYEE. Або повністю уникайте подвійних лапок, або використовуйте їх послідовно.
Перетворення типів даних та поширені помилки
SAP HANA автоматично конвертує сумісні типи, але неявне перетворення є тихим джерелом неправильних результатів та повільних запитів. Явне перетворення робить намір видимим.
Дві функції виконують цю роботу. CAST перетворює значення на іменований тип, а TO_DATE, TO_VARCHAR, TO_DECIMAL та їхні споріднені типи перетворюють значення з необов'язковим рядком форматування.
-- 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;
Чотири помилки пояснюють більшість проблем з конвертацією:
- Числове переповнення. Вставка числа 40000 у SMALLINT завершується помилкою, оскільки знаковий діапазон зупиняється на значенні 32 767. У повідомленні вказано назву стовпця, а не значення, тому спочатку перевірте визначення.
- Обрізання рядків. Завантаження тексту, довжина якого перевищує заявлену, викликає помилку, а не непомітно обрізає його. Порахуйте символи порівняно з NVARCHAR, а байти – порівняно з VARCHAR.
- Недійсний формат дати. Передавання рядка з неправильним шаблоном до TO_DATE завершується невдачею. Завжди надавайте маску форматування, а не покладайтеся на значення сеансу за замовчуванням.
- Неявне перетворення в реченні WHERE. Порівняння стовпця символів з числом змушує перетворювати кожен рядок, що перешкоджає ефективній фільтрації. Перетворюйте константу замість стовпця.
Символи порівняння, що використовуються в цих фільтрах, розглядаються в SAP Оператори HANA, і ширша платформа в SAP Підручник з HANA серії.
