- Catégories :
Fonctions de chaîne et fonctions binaires (Correspondance/Comparaison)
SUBSTR , SUBSTRING¶
Renvoie la partie de la chaîne ou de la valeur binaire de base_expr, à partir du caractère/octet spécifié par start_expr, avec une longueur éventuellement limitée.
Ces fonctions sont synonymes.
Syntaxe¶
Arguments¶
base_exprUne expression qui est évaluée sur une valeur VARCHAR ou BINARY.
start_exprUne expression qui donne un entier. Elle spécifie le décalage à partir duquel la sous-chaîne commence. Le décalage est mesuré ainsi :
Le nombre de caractères UTF-8 si l’entrée est une valeur VARCHAR.
Le nombre d’octets si l’entrée est une valeur BINARY.
La position de début est basée sur 1, pas sur 0. Par exemple,
SUBSTR('abc', 1, 1)renvoiea, pasb.length_exprUne expression qui donne un entier. Elle spécifie :
Le nombre de caractères UTF-8 à renvoyer si l’entrée est VARCHAR.
Le nombre d’octets à renvoyer si l’entrée est BINARY.
Spécifiez une longueur supérieure ou égale à zéro. Si la longueur est un nombre négatif, la fonction renvoie une chaîne vide.
Renvoie¶
Le type de données de la valeur renvoyée est identique à celui du type de données de base_expr (VARCHAR ou BINARY).
Si l’une des entrées est NULL, NULL est renvoyé.
Notes sur l’utilisation¶
Si
length_exprest spécifié, jusqu’àlength_exprdes caractères/octets sont renvoyés. Silength_exprn’est pas spécifié, tous les caractères jusqu’à la fin de la chaîne ou de la valeur binaire sont renvoyés.Les valeurs dans
start_exprcommencent à 1 :Si un 0 est spécifié, il est traité comme 1.
Si une valeur négative est spécifiée, la position de départ est calculée en tant que
start_exprcaractères/octets à partir de la fin de la chaîne ou de la valeur binaire. Si la position est en dehors de la plage d’une chaîne ou d’une valeur binaire, une valeur vide est renvoyée.
Détails du classement¶
Le classement s’applique aux entrées VARCHAR. Le classement ne s’applique pas si le type de données en entrée du premier paramètre est BINARY.
No impact. Bien que le classement soit accepté syntaxiquement, les classements n’affectent pas le traitement. Par exemple, les lettres à deux et trois caractères dans les langues (par exemple, « dzs » en hongrois ou « ch » en tchèque) sont toujours comptées comme deux ou trois caractères (et non comme un seul caractère) pour l’argument de longueur.
The collation of the result is the same as the collation of the input. Cela peut être utile si la valeur renvoyée est transmise à une autre fonction dans le cadre d’appels de fonctions imbriquées.
Exemples¶
Les exemples suivants utilisent la fonction SUBSTR.
Exemple de base¶
L’exemple suivant utilise la fonction SUBSTR permettant de renvoyer la partie de la chaîne qui commence au neuvième caractère et limite la longueur de la valeur renvoyée à trois caractères :
Spécification de différentes valeurs de début et de longueur¶
L’exemple suivant montre les sous-chaînes renvoyées pour le même base_expr lorsque des valeurs différentes sont spécifiées pour start_expr et length_expr :
Renvoyer des sous-chaînes pour les chaînes d’e-mail, de téléphone et de date¶
Les exemples suivants renvoient des sous-chaînes d’informations clientes dans une table.
Créez la table et insérez les données :
Utilisez la fonction POSITION avec la fonction SUBSTR pour extraire les domaines à partir des adresses e-mail. Cet exemple trouve la position de @ dans chaque chaîne et commence à partir du caractère suivant en ajoutant un :
Astuce
Vous pouvez utiliser la fonction POSITION permettant de trouver la position d’autres caractères, comme un caractère vide (' ') ou un trait de soulignement (_).
Dans la colonne cust_phone de la table, l’indicatif régional correspond toujours aux trois premiers caractères. Extrayez l’indicatif régional des numéros de téléphone :
Supprimer l’indicatif régional des numéros de téléphone :
Dans la colonne activation_date de la table, la date est toujours au format YYYYMMDD. Extraire l’année, le mois et le jour de ces chaînes :