Guide de création de scripts ACL 14.1

Fonction SUBSTR( )

Renvoie une sous-chaîne indiquée d'une chaîne de caractères.

SUBSTR(chaîne_de_caractères; début; longueur)
Nom Type Description
chaîne caractère Valeur à partir de laquelle extraire la sous-chaîne.
début numérique Position de départ des caractères de la sous-chaîne.
longueur numérique

Nombre de caractères dans la sous-chaîne.

Si la longueur équivaut à 0, le résultat est nul.

Caractère.

Exemples basiques

Valeur d'entrée littérale de type caractère

Renvoie "BCD" :

SUBSTR("ABCDEF"; 2; 3)

Renvoie "EF" :

SUBSTR("ABCDEF"; 5; 10)

Analyse des données de type caractère structurées

Renvoie "189543" :

SUBSTR("***189543***"; 4; 6)

Renvoie l'année à quatre chiffres d'un champ de type caractère contenant des dates ayant le format "JJ/MM/AAAA" :

SUBSTR(DATE; 7; 4)

Exemples avancés

Augmentation de la longueur du champ

Utilisez SUBSTR( ) pour augmenter la longueur d'un champ de type caractère. Augmenter la longueur d'un champ est une tâche d'harmonisation courante à laquelle vous devrez peut-être vous livrer avant de joindre ou concaténer deux champs ensemble.

L'exemple ci-dessous remplit le champ Description_Produit avec des espaces vides pour créer le champ calculé Description_Produit_Long d'une longueur de 50 caractères.

DEFINE FIELD Description_Produit_Long COMPUTED SUBSTR(Description_Produit; 1; 50)

Fonctionnement

La fonction SUBSTR( ) renvoie des caractères de la valeur de la chaîne à partir de la position du caractère précisé par start. Le nombre de caractères renvoyé est spécifié par la longueur.

Gestion des espaces par SUBSTR( )

Les espaces de début, de fin ou internes figurant dans la valeur de la chaîne de caractères sont traitées comme des caractères. Les espaces capturées par début et longueur sont incluses dans la chaine de sortie.

Fonctionnement du remplissage

Si la valeur longueur dépasse le nombre de caractères, y compris les espaces de fin, à partir de la position de début jusqu'à la fin de la valeur de la chaîne de caractères, le résultat peut être complété ou pas par des espaces.

Rempli avec des espaces

Si vous utilisez SUBSTR( ) au sein d'une commande créant un champ, la sortie est remplie avec des espaces.

Remplissage lors de la création du champ calculé

Crée le champ calculé Description_Produit_Long, avec une longueur de 50 caractères, basé sur le champ physique Description_Produit, d'une longueur de 24 caractères :

DEFINE FIELD Description_Produit_Long COMPUTED SUBSTR(Description_Produit; 1; 50)

Remplissage lors de l'extraction d'un champ physique

Extrait le champ Description_Produit_Long, avec une longueur de 50 caractères, dans une nouvelle table, basé sur le champ physique Description_Produit, d'une longueur de 24 caractères :

EXTRACT FIELDS SUBSTR(Description_Produit; 1; 50) AS "Description_Produit_Long" TO Nouvelle_Table

Pas rempli avec des espaces

Si vous utilisez SUBSTR( ) dans une définition variable ou dans une expression, la sortie n'est pas remplie avec des espaces.

Pas rempli lors de la définition d'une variable

Crée la variable v_desc_prod, avec une longueur de 24 caractères, basée sur la longueur du champ de Description_Produit :

ASSIGN v_prod_desc = SUBSTR(Description_Produit; 1; 50)

Remarque

Bien que SUBSTR( ) définisse une longueur de 50 caractères, la sortie est limitée à la longueur du champ Description_Produit.

Fonctions associées

SUBSTR( ) et SPLIT( ) renvoient tous deux un segment de données d'une chaîne source plus longue.

  • SUBSTR( ) identifie le segment à partir de la position d'un caractère numérique.
  • SPLIT( ) identifie le segment à partir d'un caractère de séparation.