LPAD
La fonction LPAD renvoie une chaîne composée de expression qui est remplie à gauche.
La fonction LPAD traite les blancs de début ou de fin dans expression comme étant significatifs. Le remplissage ne se produit que si la longueur réelle de l' expression est inférieure à longueuret que pad n'est pas une chaîne vide.
- expression
- Expression qui spécifie la chaîne à partir de laquelle le résultat est dérivé.
l'expression doit être une chaîne intégrée, un type de données numérique, datetime ou booléen. Un argument numérique, daté ou booléen est converti en VARCHAR avec un CCSID qui est le CCSID SBCS par défaut sur le serveur actuel avant d'évaluer la fonction. Pour plus d'informations sur la conversion de données numériques, temporelles et booléennes en chaînes de caractères variables, voir VARCHAR.
- longueur
- Expression qui spécifie la longueur du résultat. L'expression doit renvoyer une valeur qui est un type de données numérique intégré, chaîne de caractères ou chaîne graphique. Si le type de données de l'expression n'est pas INTEGER, il est implicitement transtypé en INTEGER avant d'évaluer la fonction. La valeur doit être zéro ou un entier positif inférieur ou égal à n, où n est la longueur maximale du type de données de résultat. Voir les limites SQL pour plus d'informations.
Si expression est une chaîne graphique, length indique le nombre de caractères graphiques DBCS ou Unicode. Si expression est une chaîne de caractères, length indique le nombre de caractères où un caractère peut être composé d'un ou de plusieurs octets. Si expression est une chaîne binaire, length indique le nombre d'octets.
- bloc de contrôle
- Expression qui spécifie la chaîne à remplir. L'expression doit renvoyer une valeur qui est un type de données intégré de type chaîne, numérique, date ou booléen. Si la valeur est un type de données numérique, temporel ou booléen, elle est implicitement convertie en VARCHAR avec un CCSID qui est le CCSID SBCS par défaut sur le serveur actuel avant d'évaluer la fonction.
La valeur de expression et la valeur de pad doivent avoir des types de données compatibles. Si le CCSID de pad est différent du CCSID de expression, la valeur pad est convertie en CCSID de expression. Pour plus d'informations sur la compatibilité des types de données, voir Affectations et comparaisons.
Le type de données du résultat dépend du type de données de l' expression:
| Type de données de l' expression | Type de données du résultat pour LPAD |
|---|---|
| CHAR ou VARCHAR ou numérique ou date-heure | ALPHAVAR |
| CLOB | CLOB |
| GRAPHIC ou VARGRAPHIC | VARGRAPHIC |
| DBCLOB | DBCLOB |
| BINARY ou VARBINARY | VARBINARY |
| BLOB | BLOB |
L'attribut de longueur du résultat dépend de longueur. Si length est explicitement spécifié par une constante entière supérieure à zéro, l'attribut de longueur du résultat est length. Si length est explicitement spécifié par une constante entière égale à zéro, l'attribut de longueur du résultat est 1. Si length est spécifié en tant qu'expression, l'attribut de longueur du résultat est le minimum de m+100 et la longueur maximale du type de données de résultat, où m est l'attribut de longueur de expression. Voir les limites SQL pour plus d'informations.
- Si length est 0, la longueur réelle est 0 et le résultat est la chaîne de résultat vide.
- Si length est égal à la longueur réelle de expression, la longueur réelle est la longueur de expression.
- Si length est inférieur à la longueur réelle de expression, le résultat est tronqué. La longueur réelle est longueur sauf si le type de données de résultat est des données mixtes de longueur variable ou Unicode de longueur variable. Dans ce cas, seuls les caractères complets seront tronqués.
- Pour les données Unicode, la longueur réelle peut être longueur-1 pour éviter qu'un caractère codé sur deux octets ne soit fractionné.
- Pour les données mixtes, la longueur réelle peut être inférieure à 3 pour tenir compte de la troncature d'un caractère à double octet et éventuellement d'un caractère "shift-in"X'0F') et d'un caractère "shift-out"X'0E').
- Si length est supérieur à la longueur réelle de expression, la longueur réelle est longueur sauf si le type de données de résultat est des données mixtes de longueur variable ou Unicode de longueur variable et que pad contient des caractères codés sur deux octets. Dans ce cas, seuls les caractères complets seront complétés.
- Pour les données Unicode, la longueur réelle peut être longueur-1 pour éviter qu'un caractère codé sur deux octets ne soit fractionné.
- Pour les données mixtes, la longueur réelle peut être inférieure à 3 pour tenir compte de la troncature d'un caractère à double octet et éventuellement d'un caractère "shift-in"X'0F') et d'un caractère "shift-out"X'0E'). De plus, ce résultat n'aura pas de codes de décalage redondants "au niveau de la couture". Ainsi, si le bloc est une chaîne se terminant par un caractère "shift-in"X'0F' et que l'expression commence par un caractère "shift-out"X'0E'), ces deux octets sont éliminés du résultat.
Si un argument peut être null, le résultat peut être null ; si un argument est null, le résultat est la valeur null.
Le CCSID du résultat est identique à celui de l' expression.
Exemples
- Exemple 1: Supposons que NAME est une colonne VARCHAR (15) qui contient les valeurs "Chris", "Meg" et "Jeff". La requête suivante va complètement remplir une valeur sur la gauche avec des points:
Renvoie :SELECT LPAD(NAME,15,'.' ) AS NAME FROM T1;NAME --------------- ..........Chris ............Meg ...........Jeff - Exemple 2: Supposons que NAME est une colonne VARCHAR (15) qui contient les valeurs "Chris", "Meg" et "Jeff". La requête suivante ne permet de remplir que chaque valeur avec une longueur de 5:
Renvoie :SELECT LPAD(NAME,5,'.' ) AS NAME FROM T1;NAME ----- Chris ..Meg .Jeff - Exemple 3: Supposons que NAME est une colonne CHAR (15) contenant les valeurs "Chris", "Meg" et "Jeff". La fonction LPAD n'est pas remplie car NAME est une zone de caractères de longueur fixe et est déjà rempli à blanc. Cependant, la longueur du résultat étant de 5, les colonnes sont tronquées:
Renvoie :SELECT LPAD(NAME,5,'.' ) AS NAME FROM T1;NAME ----- Chris Meg Jeff - Exemple 4: Supposons que NAME est une colonne VARCHAR (15) contenant les valeurs "Chris", "Meg" et "Jeff". Dans certains cas, une instance partielle de la spécification de bloc de contrôle est renvoyée:
Renvoie :SELECT LPAD(NAME,15,'123' ) AS NAME FROM T1;NAME --------------- 1231231231Chris 123123123123Meg 12312312312Jeff - Exemple 5: Supposons que NAME est une colonne VARCHAR (15) contenant les valeurs "Chris", "Meg" et "Jeff". Notez que "Chris" est tronqué, "Meg" est rempli et "Jeff" est inchangé:
Renvoie :SELECT LPAD(NAME,4,'.' ) AS NAME FROM T1;NAME ---- Chri .Meg Jeff
