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.

