Aller au contenu

Service SQL IBM i (AS/400) · Fonction table

SYSTOOLS.SPLIT

Découper une chaîne en éléments

Découpe une chaîne en plusieurs lignes selon un séparateur, avec la position de chaque élément : pratique pour traiter des listes.

À quoi ça sert

Cette fonction de table prend une liste (INPUT_LIST), un délimiteur (DELIMITER) et un caractère d'échappement facultatif (ESCAPE), et renvoie une ligne par élément avec sa position (ORDINAL_POSITION) et sa valeur (ELEMENT).

On s'en sert pour transformer une valeur composite en lignes exploitables : une liste de bibliothèques séparées par des virgules, un paramètre multiple reçu d'une application, des mots d'un texte. On la joint ensuite à d'autres tables comme n'importe quelle fonction de table.

Résultat réel sur un IBM i 7.5

Ce que nous avons exécuté :

SELECT * FROM TABLE(SYSTOOLS.SPLIT('QSYS2,SYSTOOLS,QGPL,JOBISQL', ',')) X

Ce que l'IBM i a renvoyé le 01/10/2026 (4 lignes au plus) :

ORDINAL_POSITION Position ordinale ELEMENT Élément
1 QSYS2
2 SYSTOOLS
3 QGPL
4 JOBISQL

Données anonymisées : les noms de système, de profils, de bibliothèques, de postes et les adresses IP ont été remplacés. Les objets du schéma JOBISQL sont des objets de démonstration créés pour ce site.

L'exemple d'IBM

Découper la chaîne « This is a test string » en segments en utilisant l'espace comme séparateur.

-- Description: Break a string into segments, using blank as the separating character. 
 SELECT * FROM TABLE(SYSTOOLS.SPLIT('This is a test string', ' ')) 
    ORDER BY ORDINAL_POSITION;

Bon à savoir

Trier sur ORDINAL_POSITION pour retrouver l'ordre d'origine des éléments.

Paramètres

ParamètreTypePar défautSignification
INPUT_LIST CHAR LARGE OBJECT obligatoire Liste à découper
DELIMITER VARCHAR(32672) obligatoire Délimiteur
ESCAPE CHAR(1) NULL Caractère d'échappement

Colonnes renvoyées (2)

Afficher les 2 colonnes
ColonneTypeSignification
ORDINAL_POSITION BIGINT Position ordinale
ELEMENT CHAR LARGE OBJECT Élément