Fonction SUBSTR( )
Renvoie une sous-chaîne indiquée d'une chaîne de caractères.
Syntaxe
SUBSTR(chaîne_de_caractères; début; longueur)
Paramètres
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. |
Sortie
Caractère.
Exemples
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)
Remarques
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.