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 |