Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

LEFT() vs. SUBSTRING() in SQL Server:Was ist der Unterschied?

In SQL Server-Umgebungen sind zwei der vielen String-Funktionen, die uns zur Verfügung stehen, LEFT() und SUBSTRING() .

Diese Funktionen machen ähnliches, aber es gibt Unterschiede. Dieser Artikel befasst sich mit einigen der Hauptunterschiede zwischen diesen Funktionen.

Definition

Sehen wir uns zuerst an, was jede Funktion tut:

LEFT()
Gibt den linken Teil einer Zeichenfolge mit der angegebenen Anzahl von Zeichen zurück.
SUBSTRING()
Gibt einen Teil eines Zeichen-, Binär-, Text- oder Bildausdrucks zurück.

Also LEFT() gibt nur den linken Teil der Zeichenfolge zurück.

SUBSTRING() gibt einfach einen Teil des Ausdrucks zurück (er ist nicht nur auf den linken Teil beschränkt – er kann links, rechts oder irgendwo in der Mitte sein).

Beispiel 1 – Gleiches Ergebnis

Beide Funktionen können verwendet werden, um eine bestimmte Anzahl von Zeichen von links zurückzugeben.

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

Ergebnis:

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

Allerdings LEFT() ist prägnanter. Dies liegt zum Teil daran, dass der Funktionsname weniger Zeichen enthält.

Aber es liegt auch an der Syntax. Das LEFT() -Funktion erfordert nur zwei Argumente (den Ausdruck und die Anzahl der zurückzugebenden Zeichen), während SUBSTRING() erfordert drei Argumente (den Ausdruck, die Startposition und die Anzahl der Zeichen, die von dieser Startposition zurückgegeben werden).

Beispiel 2 – Wenn SUBSTRING besser ist

SUBSTRING() ist viel besser als LEFT() beim Ergreifen von Daten aus der Mitte der Zeichenfolge. Eigentlich ist die Linke dafür nicht ausgelegt. Wenn Sie wirklich LEFT() verwenden wollten Dazu müssen Sie einige Tricks anwenden, z. B. ein RIGHT() verwenden Funktion als erstes Argument.

Beispiel:

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

Ergebnis:

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

Akzeptierte Datentypen

Das LEFT() Funktion akzeptiert den Text nicht und ntext Datentypen als erstes Argument. Es unterstützt alle anderen Datentypen, die in varchar konvertiert werden können oder nvarchar .

Der SUBSTRING() Funktion hingegen akzeptiert Zeichen , binär , Text , ntext und Bild Ausdrücke.

Rückgabewerte

LEFT() gibt varchar zurück wenn das erste Argument ein Nicht-Unicode-Zeichendatentyp ist, und nvarchar wenn es sich um einen Unicode-Zeichendatentyp handelt.

Die Rückgabewerte für SUBSTRING() lauten wie folgt:

Ausdruck (erstes Argument) Rückgabetyp
Zeichen /varchar /Text varchar
nchar /nvarchar /ntext nvarchar
binär /varbinary /Bild varbinary