SAP Типы данных HANA: числовые, символьные, десятичные.
⚡ Умное резюме
SAP Типы данных HANA определяют, что может хранить каждый столбец, включая даты и время, числовые значения, логические значения, строковые значения, двоичные данные, большие объекты и многозначные классификации. Каждая картаping к определенному типу столбцового хранилища.
В этом SAP В учебнике по типам данных HANA мы научимся:
1) SAP Типы данных HANA – SAP Типы данных HANA включают дату и время, числовой тип данных, логический тип, символьную строку, двоичные типы данных и т. д.
2) SAP Идентификаторы HANA – Идентификаторы с разделителями и идентификаторы без разделителей
Типы данных в SAP HANA
In SAP База данных Хана, SQL Типы данных указаны ниже:
| классификация | Подклассификация | Тип данных SQL | Тип хранилища столбца | Формат по умолчанию |
|---|---|---|---|---|
| Типы даты и времени | Время | ДАТА | CS_DAYDATE | 'ГГГГ-ММ-ДД' |
| Дата | ВРЕМЯ | CS_SECONDTIME | 'HH24:MI:SS' | |
| Второе свидание | ВТОРАЯ ДАТА | CS_LONGDATE | 'ГГГГ-ММ-ДД ЧЧ24:МИ:СС' | |
| Временная печать | ВРЕМЯ | CS_SECONDDATE | 'ГГГГ-ММ-ДД ЧЧ24:МИ:СС.ФФн' | |
| Числовые типы | Крошечное целое число | ТИНИИНТ | CS_INT | 8-битное беззнаковое целое число, диапазон от 0 до 255 |
| Маленькое целое число | МАЛЕНЬКИЙ | CS_INT | 16-битное знаковое целое число, диапазон от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 | |
| Целое | ЦЕЛОЕ | 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 | |
| Десятичная дробь | ДЕСЯТИЧНЫЙ(п, с) p-точность s- масштаб |
CS_FIXED(пс, с) | Точность p может находиться в диапазоне от 1 до 38. Масштаб s может варьироваться от 0 до p для SAP Десятичный тип данных HANA. Если точность и масштаб не указаны, DECIMAL становится десятичным числом с плавающей запятой. |
|
| Маленькая десятичная дробь | МАЛЫЙ ДЕСЯТИЧЕСКИЙ | CS_SDFLOAT | Это десятичное число с плавающей запятой. Точность и масштаб должны находиться в диапазоне от 1 до 16 для точности и от -369 до 368 для масштаба, в зависимости от сохраненного значения. SMALLDECIMAL поддерживается только для таблицы хранилища столбцов. | |
| Настоящий номер | РЕАЛ | CS_FLOAT | 32-битное число одинарной точности с плавающей запятой | |
| Double Номер регистрации | ДВОЙНОЙ | CS_DOUBLE | 64-битное число двойной точности с плавающей запятой | |
| Поплавок | ПЛАВАЮЩАЯ(n) | CS_DOUBLE | Это 32-битное или 64-битное действительное число. Где n обозначает количество бит и должно находиться в диапазоне от 1 до 53. | |
| Логический | Логический | БУЛЕВЫ | CS_INT | ИСТИНА, ЛОЖЬ И НЕИЗВЕСТНО (НОЛЬ). |
| Строка символов | Символьная строка переменной длины | VARCHAR (п) | CS_STRING | Этот тип данных HANA string length представляет собой символьную строку переменной длины, где 'n' обозначает максимальную длину в байтах и является целым числом от 1 до 5000. |
| Символ Юникода переменной длины | НВАРЧАР(n) | CS_STRING | Строка набора символов Юникода переменной длины, где указывает максимальную длину в символах и представляет собой целое число от 1 до 5000. | |
| Буквенно-цифровой символ | АЛЬФАН(н) | CS_АЛЬФАНУМ | Буквенно-цифровые символы переменной длины, где n указывает максимальную длину и представляет собой целое число от 1 до 127. | |
| Краткий текст | КРАТКИЙ ТЕКСТ(n) | CS_STRING | Это строка переменной длины, которая обеспечивает возможности текстового и строкового поиска. Этот тип данных может быть определен для таблиц со столбцовым хранилищем, но не для таблиц со строками. | |
| Двоичные типы | Двоичный текст | ВАРБИНАРИЙ(n) | CS_RAW | Храните двоичные данные указанной максимальной длины в байтах, где n указывает максимальную длину и является целым числом от 1 до 5000. |
| Типы LOB (типы больших объектов) | Двоичный LOB | Большой двоичный объект | CS_RAW | Большие объемы двоичных данных |
| Персонаж ЛОБ | КЛОБ | CS_STRING | Символьные данные ASCII | |
| LOB символов Юникода | НКЛОБ | CS_STRING | Большой символьный объект Юникода | |
| ТЕКСТ | ТЕКСТ | CS_STRING | Тип данных TEXT обеспечивает функции текстового поиска. Этот тип данных можно определить для таблиц хранилища столбцов, но не для таблиц хранилища строк. | |
| ДВОИЧНЫЕ текстовые данные | БИНТЕКСТ | 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 Хана SQL учебное пособие.
SAP Идентификаторы HANA
Идентификаторы используются для представления имени в SQL оператор (например, имя таблицы, имя представления, имя столбца, имя индекса, имя синонима, имя процедуры, имя функции и т. д.)
В системе есть два типа идентификаторов. SAP HANA: идентификаторы с разделителями и идентификаторы без разделителей.
- Идентификаторы с разделителями – Он заключен в разделитель, Double Кавычки "". Идентификатор может содержать любой символ, включая специальный символ.
- Неограниченные идентификаторы – Неограниченные идентификаторы (имя таблицы, имя столбца) должны начинаться с буквы и не могут содержать никаких символов, кроме цифры или подчеркивания «_».
Существует два типа кавычек для разделения, как показано ниже:
- Одинарная кавычка (' ') – Используется для разделения строки.
- Double Кавычка (" ")– Используется для разграничения идентификаторов.
⚠️ Предупреждение: Идентификатор без разделителей преобразуется в верхний регистр при создании объекта. Создание таблицы как employee и последующий выбор из "employee" в нижнем регистре приведет к ошибке, поскольку сохраненное имя — 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 серии.

