sql >> Database teknologi >  >> RDS >> Sqlserver

LEFT() vs SUBSTRING() i SQL Server:Hvad er forskellen?

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.

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

  1. Advarsel:PDO::__construct():[2002] Ingen sådan fil eller mappe (forsøger at oprette forbindelse via unix:///tmp/mysql.sock) i

  2. Hvordan bruger man COUNT i SQL?

  3. Hvordan indsætter man flere poster og får identitetsværdien?

  4. SQL-overvågning i SQL-udvikler