SAP Funzioni SQL di HANA: tipi ed esempi
⚡ Riepilogo intelligente
SAP Le funzioni SQL di HANA trasformano i valori all'interno di una query senza spostare i dati al livello applicativo. Sette categorie coprono la conversione dei tipi di dati, le operazioni su date e ore, fulltext, numeri, stringhe, finestre e altre operazioni varie.
SAP Funzioni SQL di HANA
SAP HANA fornisce quanto segue SAP Funzioni HANA-
- Funzione di conversione del tipo di dati – La funzione di conversione del tipo di dati viene utilizzata per convertire un tipo di dati in un altro. Di seguito è riportato l'elenco delle funzioni di conversione del tipo di dati: ad esempio CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY ecc.
- Funzioni data/ora – Le funzioni Data e Ora vengono utilizzate per convertire date e ore in formati diversi. Ad esempio: ADD_DAYS, ADD_MONTHS, ADD_SECOND, ecc.
- Funzioni del testo completo – Le funzioni Fulltext vengono utilizzate per la ricerca testuale. Ad esempio, SCORE ecc.
- Funzioni numeriche – Le funzioni numeriche prendono in input un valore numerico, o una stringa contenente caratteri numerici, e restituiscono valori numerici. Ad esempio: ABS, ROUND, POWER, ecc.
- Funzioni delle stringhe – Le funzioni per le stringhe prendono una stringa in input, la elaborano e restituiscono un valore in base alla funzione. Ad esempio (ASCII, CHAR, CONCAT, ecc.).
- Funzioni della finestra – Le funzioni finestra consentono all'utente di dividere il set di risultati di una query in gruppi di righe denominati partizioni finestra. Ad esempio RANK(), DENSE_RANK(), ROW_NUMBER(), ecc.
- Funzione varia- Ci sono altre funzioni, che vengono utilizzate per lavori vari. Ad esempio – CONVERT_CURRENCY, CURRENT_SCHEMA, ecc.
Ogni funzione sopra descritta viene valutata all'interno del motore del database, motivo per cui inserire la logica in una funzione è quasi sempre più veloce che recuperare le righe ed elaborarle in un'applicazione. Gli esempi seguenti utilizzano la tabella DUMMY, una tabella di sistema a riga singola che esiste esclusivamente per consentire di testare un'espressione senza accedere a dati reali.
Funzioni scalari, aggregate e finestra
Prima di passare agli esempi, è importante sottolineare una distinzione che determina il comportamento di una funzione in una query: quante righe vengono inserite e quante ne vengono restituite.
| Categoria | Righe in entrata : righe in uscita | Serve la clausola GROUP BY? | Esempi |
|---|---|---|---|
| Scalare | Una riga per una riga | Non | SUPERIORE, ROTONDO, FATTO, CAST |
| Aggregato | Molte righe in una riga | Sì, a meno che l'intero insieme non sia un unico gruppo. | SOMMA, AVG, CONTEGGIO, MIN, MAX |
| Finestra | Da molte righe a molte righe | No, usa OVER invece | RANK, DENSE_RANK, ROW_NUMBER, LAG |
| Table | Restituisce un set di risultati | Utilizzato nella clausola FROM | DATA_GENERA_SERIE |
La conseguenza pratica è che un'aggregazione comprime i dettagli, mentre una funzione finestra li preserva. Richiedere il valore di ciascun dipendente insieme alla media del suo dipartimento richiede una funzione finestra, perché un GROUP BY eliminerebbe completamente le singole righe.
Uncommon SAP Funzioni HANA con esempi
Le istruzioni seguenti possono essere incollate direttamente nella console SQL. Ciascuna illustra una categoria dell'elenco precedente.
1) Funzioni per le stringhe. Questi prendono in input un carattere e restituiscono un valore derivato.
SELECT UPPER('sap hana') AS UPPER_TEXT, LENGTH('SAP HANA') AS TEXT_LENGTH, CONCAT('SAP ', 'HANA') AS JOINED, SUBSTRING('SAP HANA', 5, 4) AS PART, REPLACE('SAP HANA', 'HANA', 'S/4') AS SWAPPED, TRIM(' padded ') AS CLEANED FROM DUMMY;
2) Funzioni numeriche. Vale la pena testare il comportamento di arrotondamento, perché ROUND utilizza l'arrotondamento commerciale mentre FLOOR e CEIL si muovono sempre in una direzione.
SELECT ABS(-45.7) AS ABSOLUTE_VALUE, ROUND(123.4567, 2) AS ROUNDED, FLOOR(9.9) AS ROUNDED_DOWN, CEIL(9.1) AS ROUNDED_UP, POWER(2, 10) AS RAISED, MOD(17, 5) AS REMAINDER FROM DUMMY;
3) Funzioni relative a data e ora. Questi sono quelli più spesso necessari per la rendicontazione periodica.
SELECT CURRENT_DATE AS TODAY, ADD_DAYS(CURRENT_DATE, 30) AS IN_30_DAYS, ADD_MONTHS(CURRENT_DATE, -1) AS LAST_MONTH, DAYS_BETWEEN('2026-01-01', CURRENT_DATE) AS ELAPSED, LAST_DAY(CURRENT_DATE) AS MONTH_END, WEEKDAY(CURRENT_DATE) AS DAY_INDEX FROM DUMMY;
4) Funzioni di conversione. La conversione esplicita impedisce la coercizione implicita del tipo che rallenta una clausola WHERE.
SELECT CAST('1234' AS INTEGER) AS AS_NUMBER, TO_VARCHAR(CURRENT_DATE, 'DD.MM.YYYY') AS AS_TEXT, TO_DECIMAL(1234.5678, 10, 2) AS AS_DECIMAL FROM DUMMY;
Il comportamento del tipo e i limiti di ciascun tipo di destinazione sono trattati in SAP Tipi di dati HANA.
Spiegazione delle funzioni di Windows
Una funzione finestra esegue un calcolo su un insieme di righe correlate alla riga corrente, senza comprimerle. La clausola OVER definisce tale insieme e ha due parti opzionali: PARTITION BY suddivide i dati in gruppi e ORDER BY fissa la sequenza all'interno di ciascun gruppo.
SELECT DEPARTMENT, EMP_NAME, SALARY, ROW_NUMBER() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS ROW_NUM, RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS RANKING, DENSE_RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS DENSE_RANKING, SUM(SALARY) OVER (PARTITION BY DEPARTMENT) AS DEPT_TOTAL FROM DHK_SCHEMA.EMPLOYEE;
Le tre funzioni di classificazione differiscono solo in caso di parità di valore:
- ROW_NUMBER Non ci sono mai pareggi. Due stipendi identici ricevono comunque 1 e 2, scelti arbitrariamente.
- RANGO assegna lo stesso numero alle righe a pari merito e poi salta. Due righe con il numero 1 sono seguite dal numero 3.
- DENSO_RANGO assegna lo stesso numero alle righe a pari merito e non salta. Due righe al numero 1 sono seguite dal numero 2.
Utilizzare ROW_NUMBER per la deduplicazione, RANK per il posizionamento in stile competizione e DENSE_RANK quando la sequenza deve rimanere ininterrotta. I simboli di confronto e logici utilizzati insieme a queste funzioni sono trattati in SAP operatori HANAe struttura dell'istruzione in SAP HANASQL.

