In SQL Server-omgevingen zijn twee van de vele stringfuncties die we tot onze beschikking hebben LEFT()
en SUBSTRING()
.
Deze functies doen hetzelfde, maar er zijn verschillen. In dit artikel worden enkele van de belangrijkste verschillen tussen deze functies besproken.
Definitie
Laten we eerst eens kijken naar wat elke functie doet:
LEFT()
- Retourneert het linkergedeelte van een tekenreeks met het opgegeven aantal tekens.
SUBSTRING()
- Retourneert een deel van een teken-, binaire, tekst- of afbeeldingsuitdrukking.
Dus LEFT()
retourneert alleen het linkerdeel van de tekenreeks.
SUBSTRING()
retourneert eenvoudig een deel van de uitdrukking (het is niet beperkt tot alleen het linkerdeel - het kan links, rechts of ergens in het midden zijn).
Voorbeeld 1 – Hetzelfde resultaat
Beide functies kunnen worden gebruikt om een bepaald aantal tekens van links terug te geven.
SELECT LEFT('Buckethead', 6) AS [LEFT], SUBSTRING('Buckethead', 1, 6) AS [SUBSTRING];
Resultaat:
+--------+-------------+ | LEFT | SUBSTRING | |--------+-------------| | Bucket | Bucket | +--------+-------------+
Echter, LEFT()
is beknopter. Dit komt mede doordat er minder karakters in de functienaam staan.
Maar het komt ook door de syntaxis. De LEFT()
functie vereist slechts twee argumenten (de uitdrukking en het aantal tekens dat moet worden geretourneerd), terwijl SUBSTRING()
vereist drie argumenten (de uitdrukking, de startpositie en het aantal tekens om vanaf die startpositie terug te keren).
Voorbeeld 2 – Wanneer SUBSTRING beter is
SUBSTRING()
is veel beter dan LEFT()
bij het pakken van gegevens uit het midden van de string. Links is daar eigenlijk niet voor gemaakt. Als je echt LEFT()
. wilt gebruiken om dit te doen, moet je wat bedrog doen, zoals het gebruik van een RIGHT()
functie als eerste argument.
Voorbeeld:
SELECT LEFT(RIGHT('Buckethead', 7), 3) AS [LEFT/RIGHT], SUBSTRING('Buckethead', 4, 3) AS [SUBSTRING];
Resultaat:
+--------------+-------------+ | LEFT/RIGHT | SUBSTRING | |--------------+-------------| | ket | ket | +--------------+-------------+
Geaccepteerde gegevenstypen
De LEFT()
functie accepteert de tekst . niet en ntext datatypes als het eerste argument. Het ondersteunt alle andere gegevenstypen die kunnen worden geconverteerd naar varchar of nvarchar .
De SUBSTRING()
functie daarentegen accepteert karakter , binair , tekst , ntekst , en afbeelding uitdrukkingen.
Retourwaarden
LEFT()
retourneert varchar wanneer het eerste argument een niet-Unicode-tekengegevenstype is, en nvarchar wanneer het een Unicode-tekengegevenstype is.
De retourwaarden voor SUBSTRING()
zijn als volgt:
Uitdrukking (eerste argument) | Retourtype |
---|---|
char /varchar /tekst | varchar |
nchar /nvarchar /ntekst | nvarchar |
binair /varbinair /afbeelding | varbinair |