SAP Types de données HANA : numérique, chaîne de caractères, décimal

⚡ Résumé intelligent

SAP Les types de données HANA définissent ce que chaque colonne peut stocker, notamment les dates et heures, les valeurs numériques, booléennes, les chaînes de caractères, les valeurs binaires, les objets volumineux et les classifications à valeurs multiples.ping à un type de stockage de colonnes spécifique.

  • 🗓️ Types de date et d'heure : Les formats DATE, TIME, SECONDDATE et TIMESTAMP diffèrent par la précision qu'ils conservent.
  • (I.e. Plage numérique : TINYINT à BIGINT couvrent les entiers, tandis que DECIMAL, SMALLDECIMAL, REAL et DOUBLE gèrent les fractions.
  • 🔤 Chaînes de caractères : VARCHAR contient des octets et NVARCHAR contient des caractères Unicode, les deux étant limités à 5000.
  • 📦 Gros objets : BLOB, CLOB, NCLOB, TEXT et BINTEXT stockent des données trop volumineuses pour une colonne normale.
  • 🔍 Recherche activée : TEXT, BINTEXT et SHORTTEXT prennent en charge la recherche en texte intégral, mais uniquement sur les tables de stockage en colonnes.
  • ✍️ Identifiants: Les identifiants délimités se trouvent entre guillemets doubles et acceptent n'importe quel caractère ; les identifiants non délimités doivent commencer par une lettre.
  • ❝ Règle des citations : Les guillemets simples délimitent une valeur de chaîne de caractères et les guillemets doubles délimitent un identifiant.

SAP Types de données HANA

Dans ce nouvel article concernant notre nouveau projet SAP Tutoriel sur les types de données HANA, nous apprendrons :

1) SAP Types de données HANA - SAP Les types de données HANA incluent les types de données Date Heures, Numériques, Booléens, Chaîne de caractères, Binaires, etc.

2) SAP Identifiants HANA – Identifiants délimités et identifiants non délimités

Types de données dans SAP HANA

In SAP Base de données HANA, SQL Les types de données sont les suivants :

Classification Sous-Classification Type de données SQL Type de magasin de colonnes Format par défaut
Types de date et d'heure Date le DATE at CS_DAYDATE 'AAAA-MM-JJ'
Heure TIME[DM CS_SECONDTIME 'HH24:MI:SS'
Deuxième date DEUXIÈME JOUR CS_LONGDATE 'AAAA-MM-JJ HH24:MI:SS'
Timbre horaire TIMESTAMP CS_SECONDDATE 'AAAA-MM-JJ HH24:MI:SS.FFn'
Types numériques Petit entier PETIT INT CS_INT Entier non signé 8 bits, plage de 0 à 255
Petit entier INTEMPLE CS_INT Entier signé 16 bits, plage de valeurs : -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807
Entier INTEGER CS_INT Entier signé 32 bits, plage de valeurs : -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807
Grand entier GRAND CS_FIXED(18,0) Entier signé 64 bits, plage de valeurs : -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807
Décimal DÉCIMAL(p,s)
p-Précision
échelle s
CS_FIXED(ps,s) La précision p peut aller de 1 à 38.
L'échelle s peut aller de 0 à p pour SAP Type de données décimal HANA.
Si la précision et l'échelle ne sont pas spécifiées, DECIMAL devient un nombre décimal à virgule flottante.
Petite décimale PETIT DÉCIMAL CS_SDFLOAT Il s'agit d'un nombre décimal à virgule flottante. La précision et l'échelle doivent être comprises entre 1 et 16 pour la précision et -369 et 368 pour l'échelle, en fonction de la valeur stockée. SMALLDECIMAL n'est pris en charge que pour la table de stockage de colonnes.
Nombre réel REAL CS_FLOAT nombre à virgule flottante 32 bits simple précision
Double Numéro DOUBLE CS_DOUBLE un nombre à virgule flottante 64 bits double précision
flotteur FLOTTEUR(n) CS_DOUBLE Il s'agit d'un nombre réel de 32 ou 64 bits, où n spécifie le nombre de bits et doit être compris entre 1 et 53.
Boolean Boolean Booléen CS_INT VRAI, FAUX et INCONNU (NULL).
Chaîne de caractères Chaîne de caractères de longueur variable VARCHAR (n) CS_STRING Ce type de données de longueur de chaîne HANA est une chaîne de caractères de longueur variable, où 'n' spécifie la longueur maximale en octets et il s'agit d'un entier compris entre 1 et 5000.
Caractère Unicode de longueur variable NVARCHAR(n) CS_STRING Chaîne de jeu de caractères Unicode de longueur variable, où indique la longueur maximale en caractères et est un entier compris entre 1 et 5000
Caractère alphanumérique ALPHANIUM(n) CS_ALPHANUM Caractères alphanumériques de longueur variable, où n indique la longueur maximale et est un nombre entier compris entre 1 et 127
Texte court TEXTE COURT(n) CS_STRING Il s'agit d'une chaîne de caractères de longueur variable offrant des fonctionnalités de recherche textuelle et de recherche de chaînes. Ce type de données peut être défini pour les tables de colonnes, mais pas pour les tables de lignes.
Types binaires Texte binaire VARBINAIRE(n) CS_RAW Stocke les données binaires d'une longueur maximale spécifiée en octets, où n indique la longueur maximale et est un entier compris entre 1 et 5000 .
Types LOB (types d'objets volumineux) LOB binaire BLOB CS_RAW De grandes quantités de données binaires
Caractère LOB CLOB CS_STRING Données de caractères ASCII
Caractère Unicode LOB NCLOB CS_STRING Grand objet caractère Unicode
TEXTE TEXTE CS_STRING Le type de données TEXT fournit des fonctionnalités de recherche de texte. Ce type de données peut être défini pour les tables Store en colonnes, mais pas pour les tables Store en lignes.
Données texte BINAIRE BINTEXT CS_STRING Le type de données BINTEXT est similaire au type de données TEXT et prend donc en charge les fonctionnalités de recherche de texte, mais il est possible d'insérer des données binaires. Ce type de données peut être défini pour les tables de colonnes, mais pas pour les tables de lignes.
Types à valeurs multiples tableau TABLEAU Il stocke des collections de valeurs du même type de données où chaque élément est lié à exactement une position. Les tableaux peuvent contenir des valeurs NULL comme en l'absence de valeur.

Choisir la bonne SAP Type de données HANA

Le tableau ci-dessus répertorie les options disponibles. Bien choisir est d'autant plus important dans SAP HANA est plus performant qu'une base de données sur disque, car chaque colonne réside en mémoire et un type surdimensionné consomme une ressource rare sur chaque ligne.

Quatre règles régissent la plupart des décisions :

  • Choisissez le plus petit type numérique qui convient. Un indicateur d'état à cinq valeurs possibles nécessite un type TINYINT, et non INTEGER. Sur une table d'un milliard de lignes, la différence se mesure en gigaoctets de mémoire.
  • Ne stockez jamais d'argent en REAL ou en DOUBLE. Les nombres à virgule flottante ne peuvent pas représenter les fractions décimales avec exactitude ; les totaux peuvent donc varier de quelques fractions d’unité monétaire. Utilisez le type DECIMAL en spécifiant explicitement la précision et l’échelle.
  • Préférez NVARCHAR à VARCHAR. VARCHAR compte les octets et NVARCHAR compte les caractères ; par conséquent, tout texte non ASCII est tronqué de manière inattendue en VARCHAR. SAP Les versions HANA traitent VARCHAR comme NVARCHAR précisément pour cette raison.
  • Adapter la précision des dates aux exigences. DATE pour une date calendaire, SECONDATE lorsque l'heure est importante, et TIMESTAMP uniquement lorsque la précision inférieure à la seconde est réellement nécessaire. Chaque niveau de précision supérieur engendre un coût d'espace de stockage supplémentaire par ligne.

Les types d'objets volumineux requièrent une attention particulière. Une colonne BLOB ou NCLOB est pratique mais gourmande en ressources, et la recherche textuelle sur TEXT ou SHORTTEXT ne fonctionne que sur les tables de type colonne ; le choix du stockage et celui du type de données sont donc liés. Les options de stockage sont décrites dans la section suivante : SAP HANASQL tutoriel.

SAP Identifiants HANA

Les identifiants sont utilisés pour représenter le nom dans SQL instruction (par exemple nom de table, nom de vue, nom de colonne, nom d'index, nom de synonyme, nom de procédure, nom de fonction, etc.)

Il existe deux types d'identifiants dans SAP HANA: Identifiants délimités et Identifiants non délimités.

  • Identifiants délimités – Il est enfermé dans le délimiteur, Double Citations "". L'identifiant peut contenir n'importe quel caractère, y compris un caractère spécial.
  • Identifiants non délimités – Les identifiants non délimités (nom de table, nom de colonne) doivent commencer par une lettre et ne peuvent contenir aucun symbole autre qu'un chiffre ou un trait de soulignement '_'.

Il existe deux types de guillemets pour délimiter comme ci-dessous :

  • Guillemet simple (' ') – Il est utilisé pour délimiter la chaîne.
  • Double Guillemet (" ")– Il est utilisé pour délimiter les identifiants.

⚠️ Attention : Lors de la création de l'objet, un identifiant non délimité est converti en majuscules. La création d'une table nommée « employee » suivie d'une sélection dans cette table (en minuscules) échoue, car le nom enregistré est « EMPLOYEE ». Il est donc recommandé d'éviter complètement les guillemets doubles ou de les utiliser de manière cohérente.

Conversion de types de données et erreurs courantes

SAP HANA effectue automatiquement les conversions entre types compatibles, mais ces conversions implicites sont souvent à l'origine de résultats erronés et de requêtes lentes. Les conversions explicites, quant à elles, rendent l'intention visible.

Deux fonctions effectuent le travail. CAST convertit une valeur en un type nommé, et TO_DATE, TO_VARCHAR, TO_DECIMAL et leurs fonctions apparentées effectuent la conversion avec une chaîne de format optionnelle.

-- 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;

Quatre types d'erreurs sont à l'origine de la plupart des problèmes de conversion :

  1. Dépassement de capacité numérique. L'insertion de 40000 dans un SMALLINT échoue car la plage signée s'arrête à 32 767. Le message mentionne la colonne plutôt que la valeur ; vérifiez donc d'abord la définition.
  2. Troncation de chaîne. Le chargement d'un texte plus long que la longueur déclarée génère une erreur au lieu d'être tronqué silencieusement. Le nombre de caractères est utilisé pour les types NVARCHAR et le nombre d'octets pour les types VARCHAR.
  3. Format de date invalide. L'utilisation d'une chaîne de caractères au format incorrect avec la fonction TO_DATE échoue. Il est impératif de toujours spécifier le masque de format plutôt que d'utiliser la valeur par défaut de la session.
  4. Conversion implicite dans une clause WHERE. Comparer une colonne de caractères à une colonne numérique force une conversion sur chaque ligne, ce qui empêche un filtrage efficace. Convertissez la constante plutôt que la colonne.

Les symboles de comparaison utilisés dans ces filtres sont traités dans SAP opérateurs HANAet la plateforme plus large dans le SAP Tutoriel HANA série.

FAQ

VARCHAR limite sa taille en octets, tandis que NVARCHAR la limite en caractères Unicode. Pour tout texte susceptible de contenir des caractères non ASCII, NVARCHAR est le choix le plus sûr, car il ne sera pas tronqué de manière inattendue.

Utilisez SECONDDATE lorsque la précision à la seconde est suffisante, ce qui couvre la plupart des événements professionnels. TIMESTAMP ajoute des fractions de seconde et nécessite davantage d'espace de stockage sur chaque ligne d'une grande table.

Oui. Le profilage d'un fichier source révèle les plages de valeurs, les longueurs et les formats réels, à partir desquels l'IA propose le type sûr le plus petit pour chaque colonne au lieu d'une valeur par défaut surdimensionnée et défensive.

Oui. La comparaison des longueurs déclarées avec les valeurs réellement stockées met en évidence les colonnes qui pourraient être réduites, ce qui est important car chaque colonne d'une table HANA est conservée en mémoire.

Les types TEXT, BINTEXT et SHORTTEXT offrent des fonctionnalités de recherche textuelle. Ces trois types sont limités aux tables de colonnes et ne peuvent pas être définis dans une table de lignes.

Résumez cet article avec :