i SQL Server-miljöer är två av de många strängfunktioner som står till vårt förfogandeLEFT()
ochSUBSTRING()
.
dessa funktioner gör en liknande sak, men det finns skillnader. Denna artikel tittar på några av de viktigaste skillnaderna mellan dessa funktioner.
Defintion
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ärt, 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 , SUBSTRING("Buckethead", 1, 6) AS ;
resultat:
+--------+-------------+| LEFT | SUBSTRING ||--------+-------------|| Bucket | Bucket |+--------+-------------+
LEFT()
är dock mer kortfattat., Detta beror delvis på det faktum att det finns mindre tecken i funktionsnamnet.
men det är också på grund av syntaxen. FunktionenLEFT()
kräver bara två argument (uttrycket och antalet tecken som ska returneras), medanSUBSTRING()
kräver tre argument (uttrycket, startpositionen och antalet tecken som ska returneras från startpositionen).,
exempel 2 – När SUBSTRING är bättre
SUBSTRING()
är mycket bättre änLEFT()
när du tar data från mitten av strängen. Vänster är inte avsedd för det. Om du verkligen ville använda LEFT()
för att göra detta måste du göra några knep, till exempel använda en RIGHT()
– funktion som sitt första argument.,
exempel:
SELECT LEFT(RIGHT("Buckethead", 7), 3) AS , SUBSTRING("Buckethead", 4, 3) AS ;
resultat:
+--------------+-------------+| LEFT/RIGHT | SUBSTRING ||--------------+-------------|| ket | ket |+--------------+-------------+
godkända datatyper
funktionenLEFT()
accepterar inte datatyperna text och ntext som sitt första argument. Den stöder alla andra datatyper som kan konverteras till varchar eller nvarchar.
funktionenSUBSTRING()
accepterar däremot tecken, binär, text, ntext och bilduttryck.,
returvärden
LEFT()
returnerar varchar när det första argumentet är en icke-Unicode-teckendatatyp och nvarchar när det är en Unicode-teckendatatyp.,
The return values for SUBSTRING()
are as follows:
Expression (first argument) | Return type |
---|---|
char/varchar/text | varchar |
nchar/nvarchar/ntext | nvarchar |
binary/varbinary/image | varbinary |