SUBSTR : Extraire une sous-chaîne

Comment :

Langages disponibles : reporting

La fonction SUBSTR extrait une sous-chaîne basée sur l'endroit où elle commence et sur sa longueur dans la chaîne source. SUBSTR peut modifier la position de la sous-chaîne selon les valeurs des autres champs.


Haut de page

x
Syntaxe : Extraire une sous-chaîne
SUBSTR(length, source_string, start, end, sublength, output)

où :

length

Entier

est le nombre de caractères dans source_string, ou un champ qui contient la longueur.

source_string

Alphanumérique

est la chaîne à partir de laquelle extraire une sous-chaîne encadrée par des guillemets simples, ou le champ contenant la chaîne parente.

start

Entier

est la position de départ de la sous-chaîne dans la chaîne source. Si start est est inférieur à un ou supérieur à length, la fonction renvoie des espaces.

end

Entier

est la position finale de la sous-chaîne. Si cet argument est inférieur à start ou supérieur à length, la fonction renvoie des espaces.

sublength

Entier

est le nombre de caractères de la sous-chaîne (généralement fin - début +1) Si sublength est plus longue queend-,start+1, la sous-chaîne est remplie avec des espaces rampants. Si c'est plus court, la sous-chaîne est tronquée. Cette valeur devrait être la longueur déclarée dans output. Seuls les caractères sublength seront traités.

output

Alphanumérique

est le champ qui contient le résultat, ou le format de la valeur de sortie entre guillemets simples.



Exemple : Extraire une chaîne

POSIT détermine la position de la première lettre I dans LAST_NAME; le résultat est stocké dans I_IN_NAME : SUBSTR extraits ensuite trois caractères commençant par la lettre I à partir de LAST_NAME; le résultat est stocké dans I_SUBSTR.

TABLE FILE EMPLOYEE
PRINT
COMPUTE 
    I_IN_NAME/I2 = POSIT(LAST_NAME, 15, 'I', 1, 'I2'); AND
COMPUTE
    I_SUBSTR/A3 = 
    SUBSTR(15, LAST_NAME, I_IN_NAME, I_IN_NAME+2, 3, I_SUBSTR);
BY LAST_NAME
WHERE DEPARTMENT EQ 'PRODUCTION'
END

La sortie est :

LAST_NAME      I_IN_NAME  I_SUBSTR
---------      ---------  --------
BANNING                5  ING
IRVING                 1  IRV
MCKNIGHT               5  IGH
ROMANS                 0
SMITH                  3  ITH
STEVENS                0

Romans and Stevens n'ayant aucun I dans leurs noms, SUBSTR extrait une chaîne vide.


Information Builders