I SQL Server-miljøer er to af de mange strengfunktioner til vores rådighed LEFT()
og SUBSTRING()
.
Disse funktioner gør noget lignende, men der er forskelle. Denne artikel ser på nogle af de vigtigste forskelle mellem disse funktioner.
Definition
Lad os først se på, hvad hver funktion gør:
LEFT()
- Returnerer den venstre del af en tegnstreng med det angivne antal tegn.
SUBSTRING()
- Returnerer en del af et tegn-, binær-, tekst- eller billedudtryk.
Så LEFT()
returnerer kun den venstre del af strengen.
SUBSTRING()
returnerer blot en del af udtrykket (det er ikke begrænset til kun den venstre del - det kan være venstre, højre eller et sted i midten).
Eksempel 1 – Samme resultat
Begge funktioner kan bruges til at returnere et vist antal tegn fra venstre.
SELECT LEFT('Buckethead', 6) AS [LEFT], SUBSTRING('Buckethead', 1, 6) AS [SUBSTRING];
Resultat:
+--------+-------------+ | LEFT | SUBSTRING | |--------+-------------| | Bucket | Bucket | +--------+-------------+
Dog LEFT()
er mere kortfattet. Det skyldes blandt andet, at der er færre tegn i funktionsnavnet.
Men det er også på grund af syntaksen. LEFT()
Funktionen kræver kun to argumenter (udtrykket og antallet af tegn, der skal returneres), hvorimod SUBSTRING()
kræver tre argumenter (udtrykket, startpositionen og antallet af tegn for at returnere fra den startposition).
Eksempel 2 – Når SUBSTRING er bedre
SUBSTRING()
er meget bedre end LEFT()
ved at gribe data fra midten af strengen. Faktisk er venstre ikke designet til det. Hvis du virkelig ville bruge LEFT()
for at gøre dette, skal du lave nogle tricks, såsom at bruge en RIGHT()
fungere som dets første argument.
Eksempel:
SELECT LEFT(RIGHT('Buckethead', 7), 3) AS [LEFT/RIGHT], SUBSTRING('Buckethead', 4, 3) AS [SUBSTRING];
Resultat:
+--------------+-------------+ | LEFT/RIGHT | SUBSTRING | |--------------+-------------| | ket | ket | +--------------+-------------+
Accepterede datatyper
LEFT()
funktionen accepterer ikke teksten og ntekst datatyper som dets første argument. Det understøtter alle andre datatyper, der kan konverteres til varchar eller nvarchar .
SUBSTRING()
funktion på den anden side, accepterer tegn , binær , tekst , ntekst og billede udtryk.
Returværdier
LEFT()
returnerer varchar når det første argument er en ikke-Unicode-tegndatatype, og nvarchar når det er en Unicode-tegndatatype.
Returværdierne for SUBSTRING()
er som følger:
Udtryk (første argument) | Returtype |
---|---|
char /varchar /tekst | varchar |
nchar /nvarchar /ntekst | nvarchar |
binær /variabel /billede | variabel |