SAP Типы данных HANA: числовые, символьные, десятичные.

⚡ Умное резюме

SAP Типы данных HANA определяют, что может хранить каждый столбец, включая даты и время, числовые значения, логические значения, строковые значения, двоичные данные, большие объекты и многозначные классификации. Каждая картаping к определенному типу столбцового хранилища.

  • 🗓️ Типы даты и времени: Параметры DATE, TIME, SECONDDATE и TIMESTAMP различаются точностью, которую они сохраняют.
  • 🔢 Числовой диапазон: TINYINT, BIGINT и BIGINT используются для целых чисел, а DECIMAL, SMALLDECIMAL, REAL и DOUBLE — для дробных чисел.
  • 🔤 Строки символов: VARCHAR хранит байты, а NVARCHAR — символы Юникода, оба ограничены 5000 символами.
  • 📦 Большие объекты: Типы данных BLOB, CLOB, NCLOB, TEXT и BINTEXT хранят данные, слишком большие для обычного столбца.
  • 🔍 Поиск включен: TEXT, BINTEXT и SHORTTEXT поддерживают полнотекстовый поиск, но только в таблицах с колоночным хранилищем.
  • ✍️ Идентификаторы: Идентификаторы, разделённые символами, заключаются в двойные кавычки и допускают любой символ; идентификаторы без разделителей должны начинаться с буквы.
  • ❝ Правило цитирования: Одинарные кавычки используются для обозначения строкового значения, а двойные кавычки — для обозначения идентификатора.

SAP Типы данных HANA

В этом 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;

Большинство проблем с преобразованием обусловлены четырьмя ошибками:

  1. Числовое переполнение. Вставка числа 40000 в тип SMALLINT завершается ошибкой, поскольку диапазон знаковых значений заканчивается на отметке 32,767. В сообщении указывается название столбца, а не его значение, поэтому сначала проверьте определение.
  2. Усечение строки. Загрузка текста, превышающего заявленную длину, приводит к ошибке, а не к его незаметному удалению. Подсчет символов производится по NVARCHAR, а байтов — по VARCHAR.
  3. Неверный формат даты. Передача строки с неправильным шаблоном в TO_DATE приводит к ошибке. Всегда указывайте маску формата, а не полагайтесь на значение по умолчанию, заданное в сессии.
  4. Неявное преобразование в предложении WHERE. Сравнение символьного столбца с числовым приводит к преобразованию каждой строки, что препятствует эффективной фильтрации. Преобразуйте константу, а не столбец.

Символы сравнения, используемые в этих фильтрах, описаны в SAP операторы HANAи более широкой платформы в SAP Учебное пособие по HANA серии.

Часто задаваемые вопросы (FAQ)

VARCHAR измеряет свой лимит в байтах, а NVARCHAR — в символах Юникода. Для любого текста, который может содержать символы, не относящиеся к ASCII, NVARCHAR является безопасным выбором, поскольку он не будет неожиданно обрезаться.

Используйте SECONDDATE, когда достаточно точности в одну секунду, что охватывает большинство бизнес-событий. TIMESTAMP добавляет доли секунды и требует больше места в памяти для каждой строки большой таблицы.

Да. Профилирование исходного файла позволяет выявить фактические диапазоны значений, длины и форматы, на основе которых ИИ предлагает наименьший безопасный тип для каждого столбца вместо защитного завышенного значения по умолчанию.

Да. Сравнение заявленных длин с фактически сохраненными значениями позволяет выявить столбцы, длина которых может уменьшиться, что важно, поскольку каждый столбец таблицы HANA хранится в памяти.

TEXT, BINTEXT и SHORTTEXT предоставляют возможности текстового поиска. Все три предназначены только для таблиц с колоночным хранилищем и не могут быть определены для таблиц с построчным хранилищем.

Подведем итог этой публикации следующим образом: