LPAD

La fonction LPAD renvoie une chaîne composée de expression qui est remplie à gauche.

Lire le diagramme de syntaxeIgnorer le diagramme de syntaxe graphiqueLPAD(expression, longueur ,remplir )

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.
Si pad n'est pas spécifié, le caractère de remplissage est défini comme suit:
  • Pour les chaînes de caractères et graphiques, un caractère blanc UTF-16ou UTF-8 basé sur le type de données et le CCSID de l'expression .1
  • Pour les chaînes binaires, des zéros hexadécimaux.

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.

La longueur réelle du résultat est déterminée à partir de longueur.
  • 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:
    SELECT LPAD(NAME,15,'.' ) AS NAME FROM T1;  
    Renvoie :
    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:
    SELECT LPAD(NAME,5,'.' ) AS NAME FROM T1;
    Renvoie :
    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:
    SELECT LPAD(NAME,5,'.' ) AS NAME FROM T1;
    Renvoie :
    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:
    SELECT LPAD(NAME,15,'123' ) AS NAME FROM T1;
    Renvoie :
    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é:
    SELECT LPAD(NAME,4,'.' ) AS NAME FROM T1;
    Renvoie :
    NAME 
    ---- 
    Chri 
    .Meg 
    Jeff
1 UTF-16 ou UCS-2 définit un caractère blanc au point de code X'0020'et X'3000'. Le gestionnaire de base de données se remplit avec le blanc au point de code X'0020'. Le gestionnaire de base de données remplit UTF-8 avec un blanc au point de code X'20'