Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

LEFT() vs SUBSTRING() dans SQL Server :Quelle est la différence ?

Dans les environnements SQL Server, deux des nombreuses fonctions de chaîne à notre disposition sont LEFT() et SUBSTRING() .

Ces fonctions font une chose similaire, mais il y a des différences. Cet article examine certaines des principales différences entre ces fonctions.

Définition

Voyons d'abord ce que fait chaque fonction :

LEFT()
Renvoie la partie gauche d'une chaîne de caractères avec le nombre de caractères spécifié.
SUBSTRING()
Renvoie une partie d'une expression de type caractère, binaire, texte ou image.

Donc LEFT() renvoie uniquement la partie gauche de la chaîne.

SUBSTRING() renvoie simplement une partie de l'expression (elle n'est pas limitée à la partie gauche - elle peut être à gauche, à droite ou quelque part au milieu).

Exemple 1 - Même résultat

Les deux fonctions peuvent être utilisées pour renvoyer un certain nombre de caractères à partir de la gauche.

SELECT 
  LEFT('Buckethead', 6) AS [LEFT],
  SUBSTRING('Buckethead', 1, 6) AS [SUBSTRING];

Résultat :

+--------+-------------+
| LEFT   | SUBSTRING   |
|--------+-------------|
| Bucket | Bucket      |
+--------+-------------+

Cependant, LEFT() est plus concis. Cela est dû en partie au fait qu'il y a moins de caractères dans le nom de la fonction.

Mais c'est aussi à cause de la syntaxe. Le LEFT() la fonction ne nécessite que deux arguments (l'expression et le nombre de caractères à renvoyer), alors que SUBSTRING() nécessite trois arguments (l'expression, la position de départ et le nombre de caractères à renvoyer à partir de cette position de départ).

Exemple 2 – Lorsque SUBSTRING est préférable

SUBSTRING() est bien meilleur que LEFT() à saisir des données au milieu de la chaîne. En fait, la gauche n'est pas conçue pour cela. Si vous vouliez vraiment utiliser LEFT() pour ce faire, vous devrez faire quelques trucs, comme utiliser un RIGHT() fonction comme premier argument.

Exemple :

SELECT 
  LEFT(RIGHT('Buckethead', 7), 3) AS [LEFT/RIGHT],
  SUBSTRING('Buckethead', 4, 3) AS [SUBSTRING];

Résultat :

+--------------+-------------+
| LEFT/RIGHT   | SUBSTRING   |
|--------------+-------------|
| ket          | ket         |
+--------------+-------------+

Types de données acceptés

Le LEFT() la fonction n'accepte pas le texte et texte types de données comme premier argument. Il prend en charge tous les autres types de données pouvant être convertis en varchar ou nvarchar .

Le SUBSTRING() fonction d'autre part, accepte caractère , binaire , texte , texte , et image expressions.

Valeurs de retour

LEFT() renvoie varchar lorsque le premier argument est un type de données de caractères non Unicode et nvarchar lorsqu'il s'agit d'un type de données de caractères Unicode.

Les valeurs de retour pour SUBSTRING() sont les suivants :

Expression (premier argument) Type de retour
char /varchar /texte varchar
nchar /nvarchar /texte nvarchar
binaire /varbinaire /image varbinaire