I SQL Server-miljöer är två av de många strängfunktionerna som står till vårt förfogande LEFT()
och SUBSTRING()
.
Dessa funktioner gör en liknande sak, men det finns skillnader. Den här artikeln tittar på några av de viktigaste skillnaderna mellan dessa funktioner.
Definition
Låt oss först titta på vad varje funktion gör:
LEFT()
- Returnerar den vänstra delen av en teckensträng med det angivna antalet tecken.
SUBSTRING()
- Returnerar en del av ett tecken-, binär-, text- eller bilduttryck.
Så LEFT()
returnerar endast den vänstra delen av strängen.
SUBSTRING()
returnerar helt enkelt en del av uttrycket (det är inte begränsat till bara den vänstra delen – det kan vara vänster, höger eller någonstans i mitten).
Exempel 1 – Samma resultat
Båda funktionerna kan användas för att returnera ett visst antal tecken från vänster.
SELECT LEFT('Buckethead', 6) AS [LEFT], SUBSTRING('Buckethead', 1, 6) AS [SUBSTRING];
Resultat:
+--------+-------------+ | LEFT | SUBSTRING | |--------+-------------| | Bucket | Bucket | +--------+-------------+
Men LEFT()
är mer kortfattad. Detta beror delvis på att det finns färre tecken i funktionsnamnet.
Men det är också på grund av syntaxen. LEFT()
Funktionen kräver bara två argument (uttrycket och antalet tecken som ska returneras), medan SUBSTRING()
kräver tre argument (uttrycket, startpositionen och antalet tecken för att återgå från den startpositionen).
Exempel 2 – När SUBSTRING är bättre
SUBSTRING()
är mycket bättre än LEFT()
vid att hämta data från mitten av strängen. Egentligen är vänstern inte designad för det. Om du verkligen ville använda LEFT()
för att göra detta måste du göra några knep, som att använda en RIGHT()
fungerar som dess första argument.
Exempel:
SELECT LEFT(RIGHT('Buckethead', 7), 3) AS [LEFT/RIGHT], SUBSTRING('Buckethead', 4, 3) AS [SUBSTRING];
Resultat:
+--------------+-------------+ | LEFT/RIGHT | SUBSTRING | |--------------+-------------| | ket | ket | +--------------+-------------+
Accepterade datatyper
LEFT()
funktionen accepterar inte texten och ntext datatyper som dess första argument. Den stöder alla andra datatyper som kan konverteras till varchar eller nvarchar .
SUBSTRING()
funktion å andra sidan accepterar tecken , binär , text , ntext och bild uttryck.
Returvärden
LEFT()
returnerar varchar när det första argumentet är en datatyp som inte är Unicode-tecken, och nvarchar när det är en Unicode-teckendatatyp.
Returvärdena för SUBSTRING()
är följande:
Uttryck (första argumentet) | Returtyp |
---|---|
char /varchar /text | varchar |
nchar /nvarchar /ntext | nvarchar |
binär /variabel /bild | varbinary |