SAP Fonctions SQL HANA : types et exemples
โก Rรฉsumรฉ intelligent
SAP Les fonctions SQL de HANA transforment les valeurs d'une requรชte sans dรฉplacer les donnรฉes vers la couche applicative. Sept catรฉgories couvrent la conversion de types de donnรฉes, les dates et heures, la recherche plein texte, les nombres, les chaรฎnes de caractรจres, les fenรชtres et diverses autres opรฉrations.

SAP Fonctions SQL HANA
SAP HANA fournit les รฉlรฉments suivants SAP Fonctions HANA-
- Fonction de conversion de type de donnรฉes โ La fonction de conversion de type de donnรฉes est utilisรฉe pour convertir un type de donnรฉes en un autre. Vous trouverez ci-dessous la liste des fonctions de conversion de type de donnรฉes, par exemple CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY, etc.
- Fonctions date et heure โ Les fonctions de date et d'heure permettent de convertir une date ou une heure dans un format diffรฉrent. Par exemple : ADD_DAYS, ADD_MONTHS, ADD_SECOND, etc.
- Fonctions de texte intรฉgral โ La fonction de recherche plein texte est utilisรฉe pour la recherche textuelle. Par exemple : SCORE, etc.
- Fonctions numรฉriques โ Les fonctions numรฉriques prennent en entrรฉe une valeur numรฉrique ou une chaรฎne de caractรจres numรฉriques et renvoient des valeurs numรฉriques. Ex. : ABS, ROUND, POWER, etc.
- Fonctions de chaรฎne โ Les fonctions de traitement de chaรฎnes de caractรจres prennent une chaรฎne en entrรฉe, la traitent et renvoient une valeur en fonction de la fonction (par exemple : ASCII, CHAR, CONCAT, etc.).
- Fonctions de la fenรชtre โ Les fonctions de fenรชtrage permettent ร l'utilisateur de diviser le rรฉsultat d'une requรชte en groupes de lignes appelรฉs partitions de fenรชtre. Par exemple : RANK(), DENSE_RANK(), ROW_NUMBER(), etc.
- Fonction Diverse- Il existe d'autres fonctions qui sont utilisรฉes pour diverses tรขches. Par exemple โ CONVERT_CURRENCY, CURRENT_SCHEMA, etc.
Chaque fonction ci-dessus est รฉvaluรฉe au sein du moteur de base de donnรฉes. C'est pourquoi l'exรฉcution de la logique dans une fonction est presque toujours plus rapide que l'extraction et le traitement des lignes dans une application. Les exemples ci-dessous utilisent la table DUMMY, une table systรจme ร une seule ligne qui sert uniquement ร tester une expression sans accรฉder aux donnรฉes rรฉelles.
Fonctions scalaires, d'agrรฉgation et de fenรชtre
Avant de passer aux exemples, une distinction dรฉtermine le comportement d'une fonction dans une requรชte : le nombre de lignes en entrรฉe et le nombre de lignes en sortie.
| Catรฉgories | Lignes entrantes : lignes sortantes | Besoin de GROUP BY ? | Exemples |
|---|---|---|---|
| Scalaire | Une rangรฉe ร une rangรฉe | Non | SUPรRIEUR, RONDE, ร_DATE, DISTRIBUTION |
| Total | Plusieurs rangรฉes pour une seule rangรฉe | Oui, sauf si l'ensemble entier constitue un seul groupe. | SOMME, AVG, NOMBRE, MIN, MAX |
| Vitrine | Plusieurs rangรฉes ร plusieurs rangรฉes | Non, il utilise OVER ร la place | RANG, RANG_DENSE, NUMรRO_DE_LIGNE, RETARD |
| lampe de table | Renvoie un ensemble de rรฉsultats | Utilisรฉ dans la clause FROM | DATE DE GรNรRATION DE LA SรRIE |
Concrรจtement, une fonction d'agrรฉgation masque les dรฉtails, tandis qu'une fonction de fenรชtre les prรฉserve. Demander la moyenne de chaque employรฉ et de son dรฉpartement nรฉcessite une fonction de fenรชtre, car un GROUP BY supprimerait complรจtement les lignes individuelles.
Commun SAP Fonctions HANA avec exemples
Les instructions ci-dessous peuvent รชtre collรฉes directement dans la console SQL. Chacune illustre une catรฉgorie de la liste ci-dessus.
1) Fonctions de chaรฎnes de caractรจres. Ces fonctions prennent en entrรฉe des caractรจres et renvoient une valeur dรฉrivรฉe.
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) Fonctions numรฉriques. Il est intรฉressant de tester le comportement d'arrondi, car ROUND utilise un arrondi commercial tandis que FLOOR et CEIL se dรฉplacent toujours dans une seule direction.
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) Fonctions de date et d'heure. Ce sont celles qui sont le plus souvent nรฉcessaires pour les rapports pรฉriodiques.
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) Fonctions de conversion. La conversion explicite empรชche la conversion de type silencieuse qui ralentit une clause 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;
Le comportement des types et les limites de chaque type cible sont abordรฉs dans SAP Types de donnรฉes HANA.
Explication des fonctions de fenรชtrage
Une fonction de fenรชtre effectue un calcul sur un ensemble de lignes liรฉes ร la ligne courante, sans les fusionner. La clause OVER dรฉfinit cet ensemble et comporte deux parties optionnelles : PARTITION BY divise les donnรฉes en groupes, et ORDER BY fixe lโordre au sein de chaque groupe.
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;
Les trois fonctions de classement diffรจrent uniquement en cas d'รฉgalitรฉ :
- NUMรRO_DE_LIGNE Il n'y a jamais d'รฉgalitรฉ. Deux salaires identiques reรงoivent tout de mรชme 1 et 2, choisis arbitrairement.
- RANG Les lignes ร รฉgalitรฉ se voient attribuer le mรชme numรฉro, puis on passe ร la suivante. Deux lignes de numรฉro 1 sont suivies de lignes de numรฉro 3.
- DENSE_RANK Attribue le mรชme numรฉro aux lignes ร รฉgalitรฉ et ne saute aucune ligne. Deux lignes de numรฉro 1 sont suivies d'une ligne de numรฉro 2.
Utilisez ROW_NUMBER pour la dรฉduplication, RANK pour un classement de type compรฉtition et DENSE_RANK lorsque la sรฉquence doit rester continue. Les symboles de comparaison et logiques utilisรฉs avec ces fonctions sont traitรฉs dans [rรฉfรฉrence manquante]. SAP opรฉrateurs HANAet la structure des instructions dans SAP HANASQL.
