SAP Tipi di dati HANA: numerici, stringhe di caratteri, decimali
โก Riepilogo intelligente
SAP I tipi di dati HANA definiscono cosa puรฒ memorizzare ciascuna colonna, coprendo data e ora, numerico, booleano, stringa di caratteri, binario, oggetto di grandi dimensioni e classificazioni multivalore, ogni mappaping a uno specifico tipo di archivio a colonne.

In questa SAP Tutorial sui tipi di dati HANA, impareremo:
1) SAP Tipi di dati HANA - SAP I tipi di dati HANA includono date e orari, tipi di dati numerici, booleani, stringhe di caratteri, tipi di dati binari, ecc.
2) SAP Identificatori HANA โ Identificatori delimitati e Identificatori non delimitati
Tipi di dati in SAP HANA
In SAP banca dati HANA, SQL I tipi di dati sono i seguenti:
| Classificazione | Sottoclassificazione | Tipo di dati SQL | Tipo di archivio colonne | Formato predefinito |
|---|---|---|---|---|
| Tipi di data e ora | Data | DATA | CS_DAYDATE | 'AAAA-MM-GG' |
| Ora | ORARIO | CS_SECONDTORA | 'HH24:MI:SS' | |
| Secondo appuntamento | SECONDA DATA | CS_LONGDATA | 'AAAA-MM-GG HH24:MI:SS' | |
| Timbro di tempo | TIMESTAMP | CS_SECONDDATE | 'AAAA-MM-GG HH24:MI:SS.FFn' | |
| Tipi numerici | Intero minuscolo | PICCOLO | CS_INT | Intero senza segno a 8 bit, intervallo da 0 a 255 |
| Intero piccolo | PICCOLO | CS_INT | Intero con segno a 16 bit, intervallo da -32,768 a 32,767 | |
| Numero intero | INTEGER | CS_INT | Intero con segno a 32 bit, intervallo da -2,147,483,648 a 2,147,483,647 | |
| Grande intero | GRANDE | CS_FIXED(18,0) | Intero con segno a 64 bit, intervallo da -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 | |
| Decimale | DECIMALE(p,s) p-Precisione scala s |
CS_FIXED(ps,s) | La precisione p puรฒ variare da 1 a 38. La scala s puรฒ variare da 0 a p for SAP Tipo di dati decimali HANA. Se precisione e scala non vengono specificate, DECIMAL diventa un numero decimale a virgola mobile. |
|
| Piccolo decimale | PICCOLO DECIMALE | CS_SDFLOAT | ร un numero decimale in virgola mobile. La precisione e la scala devono essere comprese nell'intervallo 1~16 per la precisione e -369~368 per la scala, a seconda del valore memorizzato. SMALLDECIMAL รจ supportato solo per la tabella dell'archivio colonne. | |
| Numero reale | VERO | CS_FLOAT | numero a virgola mobile a 32 bit a precisione singola | |
| Double Numero | RADDOPPIARE | CS_DOPPIO | un numero in virgola mobile a 64 bit a doppia precisione | |
| galleggiante | FLOAT(n) | CS_DOPPIO | Si tratta di un numero reale a 32 o 64 bit, dove n specifica il numero di bit e deve essere compreso tra 1 e 53. | |
| Booleano | Booleano | BOOLEAN | CS_INT | VERO, FALSO E SCONOSCIUTO (NULL). |
| Stringa di caratteri | Stringa di caratteri a lunghezza variabile | VARCHAR (n) | CS_STRING | Questo tipo di dati HANA per la lunghezza delle stringhe รจ una stringa di caratteri a lunghezza variabile, dove 'n' specifica la lunghezza massima in byte ed รจ un numero intero compreso tra 1 e 5000. |
| Carattere Unicode a lunghezza variabile | NVARCHAR(n) | CS_STRING | Stringa di set di caratteri Unicode a lunghezza variabile, dove indica la lunghezza massima in caratteri ed รจ un numero intero compreso tra 1 e 5000 | |
| Carattere alfanumerico | ALFANO(n) | CS_ALPHANUM | Caratteri alfanumerici di lunghezza variabile, dove n indica la lunghezza massima ed รจ un numero intero compreso tra 1 e 127 | |
| testo breve | TESTO BREVE(n) | CS_STRING | Si tratta di una stringa di caratteri a lunghezza variabile che offre funzionalitร di ricerca testuale e di ricerca di stringhe. Questo tipo di dati puรฒ essere definito per le tabelle a colonne, ma non per le tabelle a righe. | |
| Tipi binari | Testo binario | VARBINARIO(n) | CS_RAW | Memorizza dati binari di una lunghezza massima specificata in byte, dove n indica la lunghezza massima ed รจ un numero intero compreso tra 1 e 5000. |
| Tipi LOB (tipi di oggetti di grandi dimensioni) | LOB binario | BLOB | CS_RAW | Grandi quantitร di dati binari |
| Carattere LOB | CLOB | CS_STRING | Dati in caratteri ASCII | |
| LOB di caratteri Unicode | NCLOB | CS_STRING | Oggetto carattere Unicode di grandi dimensioni | |
| TESTO | TESTO | CS_STRING | Il tipo di dati TEXT fornisce funzionalitร di ricerca di testo. Questo tipo di dati puรฒ essere definito per le tabelle Store di colonne, ma non per le tabelle Store di righe. | |
| Dati di testo BINARIO | BINTESTO | CS_STRING | Il tipo di dati BINTEXT รจ simile al tipo di dati TEXT e quindi supporta le funzionalitร di ricerca testo, ma รจ possibile inserire dati binari. Questo tipo di dati puรฒ essere definito per le tabelle di colonne, ma non per le tabelle di righe. | |
| Tipi multivalore | Italia | ARRAY | Memorizza raccolte di valori dello stesso tipo di dati in cui ciascun elemento รจ correlato esattamente a una posizione. Gli array possono contenere valori NULL come in assenza di un valore. |
Scegliere il giusto SAP Tipo di dati HANA
La tabella sopra elenca ciรฒ che รจ disponibile. Scegliere bene รจ piรน importante in SAP HANA รจ piรน efficiente di un database basato su disco, perchรฉ ogni colonna risiede in memoria e un tipo di dati di grandi dimensioni consuma una risorsa limitata per ogni riga.
La maggior parte delle decisioni si basa su quattro regole:
- Scegli il tipo numerico piรน piccolo che si adatti. Un flag di stato con cinque possibili valori richiede TINYINT, non INTEGER. In una tabella con un miliardo di righe, la differenza si misura in gigabyte di memoria.
- Non conservare mai denaro in valuta reale o doppia. I numeri in virgola mobile non possono rappresentare le frazioni decimali in modo esatto, quindi i totali possono variare di frazioni di unitร monetaria. Utilizzare il tipo DECIMAL specificando esplicitamente precisione e scala.
- Preferire NVARCHAR a VARCHAR. VARCHAR conta i byte e NVARCHAR conta i caratteri, quindi qualsiasi testo non ASCII viene troncato inaspettatamente in VARCHAR. Moderno SAP Le versioni di HANA trattano VARCHAR come NVARCHAR proprio per questo motivo.
- Assicurarsi che la precisione della data corrisponda ai requisiti. DATA per un giorno di calendario, SECONDA DATA quando l'ora del giorno รจ importante e TIMESTAMP solo quando รจ effettivamente necessaria una precisione inferiore al secondo. Ogni passaggio comporta un costo in termini di spazio di archiviazione per ogni riga.
I tipi di oggetti di grandi dimensioni meritano particolare attenzione. Una colonna BLOB o NCLOB รจ comoda ma pesante e la ricerca di testo su TEXT o SHORTTEXT funziona solo su tabelle di archiviazione a colonne, quindi la scelta dell'archiviazione e la scelta del tipo di dati sono collegate. Le opzioni di archiviazione sono trattate in SAP HANASQL tutorial.
SAP Identificatori HANA
Gli identificatori vengono utilizzati per rappresentare il nome in SQL istruzione (ad esempio nome della tabella, nome della vista, nome della colonna, nome dell'indice, nome del sinonimo, nome della procedura, nome della funzione, ecc.)
Esistono due tipi di identificatori in SAP HANA: Identificatori delimitati e Identificatori non delimitati.
- Identificatori delimitati โ ร racchiuso nel delimitatore, Double Citazioni "". L'identificatore puรฒ contenere qualsiasi carattere, compresi i caratteri speciali.
- Identificatori illimitati โ Gli identificatori illimitati (nome di tabella, nome di colonna) devono iniziare con una lettera e non possono contenere simboli diversi da una cifra o da un carattere di sottolineatura '_'.
Esistono due tipi di virgolette per delimitare come di seguito:
- Virgolette singole (' ') โ Viene utilizzato per delimitare la stringa.
- Double Virgolette (" ")โ Viene utilizzato per delimitare gli identificatori.
โ ๏ธ Attenzione: Un identificatore non delimitato viene convertito in maiuscolo al momento della creazione dell'oggetto. Creare una tabella come "employee" e successivamente selezionare "employee" in minuscolo non funziona, perchรฉ il nome memorizzato รจ EMPLOYEE. ร necessario evitare completamente le virgolette doppie oppure utilizzarle in modo coerente.
Conversione dei tipi di dati ed errori comuni
SAP HANA converte automaticamente tra tipi compatibili, ma la conversione implicita รจ la causa silenziosa di risultati errati e query lente. La conversione esplicita rende visibile l'intenzione.
Due funzioni svolgono questo compito. CAST converte un valore in un tipo denominato, mentre TO_DATE, TO_VARCHAR, TO_DECIMAL e le loro varianti convertono un valore con una stringa di formato opzionale.
-- 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;
La maggior parte dei problemi di conversione รจ causata da quattro errori:
- Overflow numerico. L'inserimento di 40000 in un SMALLINT non riesce perchรฉ l'intervallo con segno si ferma a 32,767. Il messaggio indica la colonna anzichรฉ il valore, quindi controlla prima la definizione.
- Troncamento della stringa. Il caricamento di testo piรน lungo della lunghezza dichiarata genera un errore anzichรฉ troncarlo silenziosamente. Conta i caratteri con NVARCHAR e i byte con VARCHAR.
- Formato data non valido. Passare una stringa con un formato errato a TO_DATE genera un errore. Fornire sempre la maschera di formato anzichรฉ utilizzare quella predefinita della sessione.
- Conversione implicita in una clausola WHERE. Confrontare una colonna di caratteri con una colonna numerica impone una conversione per ogni riga, impedendo un filtraggio efficiente. Converti la costante anzichรฉ la colonna.
I simboli di confronto utilizzati in questi filtri sono trattati in SAP operatori HANAe la piattaforma piรน ampia nel SAP Tutorial su HANA serie.
