sql >> Database >  >> RDS >> Sqlserver

LEFT() vs SUBSTRING() in SQL Server:wat is het verschil?

In SQL Server-omgevingen zijn twee van de vele stringfuncties die we tot onze beschikking hebben LEFT() en SUBSTRING() .

Deze functies doen hetzelfde, maar er zijn verschillen. In dit artikel worden enkele van de belangrijkste verschillen tussen deze functies besproken.

Definitie

Laten we eerst eens kijken naar wat elke functie doet:

LEFT()
Retourneert het linkergedeelte van een tekenreeks met het opgegeven aantal tekens.
SUBSTRING()
Retourneert een deel van een teken-, binaire, tekst- of afbeeldingsuitdrukking.

Dus LEFT() retourneert alleen het linkerdeel van de tekenreeks.

SUBSTRING() retourneert eenvoudig een deel van de uitdrukking (het is niet beperkt tot alleen het linkerdeel - het kan links, rechts of ergens in het midden zijn).

Voorbeeld 1 – Hetzelfde resultaat

Beide functies kunnen worden gebruikt om een ​​bepaald aantal tekens van links terug te geven.

SELECT 
  LEFT('Buckethead', 6) AS [LEFT],
  SUBSTRING('Buckethead', 1, 6) AS [SUBSTRING];

Resultaat:

+--------+-------------+
| LEFT   | SUBSTRING   |
|--------+-------------|
| Bucket | Bucket      |
+--------+-------------+

Echter, LEFT() is beknopter. Dit komt mede doordat er minder karakters in de functienaam staan.

Maar het komt ook door de syntaxis. De LEFT() functie vereist slechts twee argumenten (de uitdrukking en het aantal tekens dat moet worden geretourneerd), terwijl SUBSTRING() vereist drie argumenten (de uitdrukking, de startpositie en het aantal tekens om vanaf die startpositie terug te keren).

Voorbeeld 2 – Wanneer SUBSTRING beter is

SUBSTRING() is veel beter dan LEFT() bij het pakken van gegevens uit het midden van de string. Links is daar eigenlijk niet voor gemaakt. Als je echt LEFT() . wilt gebruiken om dit te doen, moet je wat bedrog doen, zoals het gebruik van een RIGHT() functie als eerste argument.

Voorbeeld:

SELECT 
  LEFT(RIGHT('Buckethead', 7), 3) AS [LEFT/RIGHT],
  SUBSTRING('Buckethead', 4, 3) AS [SUBSTRING];

Resultaat:

+--------------+-------------+
| LEFT/RIGHT   | SUBSTRING   |
|--------------+-------------|
| ket          | ket         |
+--------------+-------------+

Geaccepteerde gegevenstypen

De LEFT() functie accepteert de tekst . niet en ntext datatypes als het eerste argument. Het ondersteunt alle andere gegevenstypen die kunnen worden geconverteerd naar varchar of nvarchar .

De SUBSTRING() functie daarentegen accepteert karakter , binair , tekst , ntekst , en afbeelding uitdrukkingen.

Retourwaarden

LEFT() retourneert varchar wanneer het eerste argument een niet-Unicode-tekengegevenstype is, en nvarchar wanneer het een Unicode-tekengegevenstype is.

De retourwaarden voor SUBSTRING() zijn als volgt:

Uitdrukking (eerste argument) Retourtype
char /varchar /tekst varchar
nchar /nvarchar /ntekst nvarchar
binair /varbinair /afbeelding varbinair

  1. sql use-instructie met variabele

  2. Waarom retourneert IS NIET NULL NULL-waarden voor een Varchar (max) in SQL Server?

  3. Hoe het DATETIME-veld opvragen met alleen de datum in Microsoft SQL Server?

  4. tnsnames.ora ontleden in Visual C# 2008