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.

  • (I.e. Fonctions de conversion : Les fonctions CAST, TO_BIGINT, TO_ALPHANUM et TO_BINARY permettent de convertir une valeur d'un type de données à un autre.
  • 📅 Fonctions de date et d'heure : Les fonctions ADD_DAYS, ADD_MONTHS et ADD_SECONDS permettent de décaler ou de reformater les valeurs de date et d'heure.
  • 🔍 Fonctions de texte intégral : SCORE et les fonctions associées classent les résultats renvoyés par une recherche textuelle.
  • (I.e. Fonctions numériques : Les fonctions ABS, ROUND et POWER acceptent une entrée numérique et renvoient un résultat numérique.
  • 🔤 Fonctions de chaînes de caractères : Les fonctions ASCII, CHAR et CONCAT traitent les entrées de caractères et renvoient une valeur dérivée.
  • 🪟 Fonctions de la fenêtre : RANK, DENSE_RANK et ROW_NUMBER divisent un ensemble de résultats en partitions de fenêtre.
  • 🧰 Divers: CONVERT_CURRENCY et CURRENT_SCHEMA gèrent des tâches qui ne se déroulent pas dans les six autres groupes.

SAP Fonctions SQL HANA

SAP Fonctions SQL HANA

SAP HANA fournit les éléments suivants SAP Fonctions HANA-

  1. 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.
  2. 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.
  3. Fonctions de texte intégral – La fonction de recherche plein texte est utilisée pour la recherche textuelle. Par exemple : SCORE, etc.
  4. 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.
  5. 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.).
  6. 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.
  7. 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.

FAQ

DUMMY est une table système contenant une seule ligne. Elle permet d'évaluer une expression ou une fonction dans une instruction SELECT sans faire référence à une table réelle.

Les deux méthodes attribuent le même numéro aux lignes ex æquo. RANK ignore ensuite les valeurs suivantes : deux premières sont suivies d'une troisième. DENSE_RANK ne procède à aucun saut : deux premières sont suivies d'une deuxième.

Oui. Décrire la transformation en langage clair permet de retrouver la fonction et la syntaxe correspondantes, ce qui est plus rapide que de parcourir une liste de référence de plusieurs centaines d'entrées.

Souvent. Une fonction appliquée à une colonne filtrée empêche un filtrage efficace, et l'IA peut restructurer le prédicat pour que la colonne reste intacte. Vérifiez auprès du plan d'exécution.

Oui, mais l'appliquer à la colonne oblige à l'évaluer sur chaque ligne. Dans la mesure du possible, transformez plutôt la constante afin que la colonne puisse toujours être filtrée efficacement.

Résumez cet article avec :