sql >> Databasteknik >  >> RDS >> Sqlserver

LEFT() vs SUBSTRING() i SQL Server:Vad är skillnaden?

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.

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

  1. Läs och importera XLSX (Excel)-fil i Oracle

  2. Hur man konverterar till versaler i SQLite

  3. Hur synkroniserar man Mysql DB om Master och slav har olika databas i fall av Mysql-replikering?

  4. Hur testar man metoder som hanterar SQLite-databas i Android?