sql >> Databáze >  >> RDS >> Sqlserver

LEFT() vs SUBSTRING() v SQL Server:Jaký je rozdíl?

V prostředích SQL Server jsou dvě z mnoha řetězcových funkcí, které máme k dispozici, LEFT() a SUBSTRING() .

Tyto funkce dělají podobnou věc, ale existují rozdíly. Tento článek se zabývá některými hlavními rozdíly mezi těmito funkcemi.

Definice

Nejprve se podívejme, co jednotlivé funkce dělají:

LEFT()
Vrátí levou část řetězce znaků se zadaným počtem znaků.
SUBSTRING()
Vrátí část znakového, binárního, textového nebo obrazového výrazu.

Takže LEFT() vrátí pouze levou část řetězce.

SUBSTRING() jednoduše vrátí část výrazu (není omezena pouze na levou část – může to být vlevo, vpravo nebo někde uprostřed).

Příklad 1 – stejný výsledek

Obě funkce lze použít k vrácení určitého počtu znaků zleva.

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

Výsledek:

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

Nicméně LEFT() je stručnější. Částečně je to způsobeno tím, že v názvu funkce je méně znaků.

Ale je to také kvůli syntaxi. LEFT() funkce vyžaduje pouze dva argumenty (výraz a počet znaků, které se mají vrátit), zatímco SUBSTRING() vyžaduje tři argumenty (výraz, počáteční pozici a počet znaků, které se mají z této výchozí pozice vrátit).

Příklad 2 – Když je SUBSTRING lepší

SUBSTRING() je mnohem lepší než LEFT() při získávání dat ze středu řetězce. Ve skutečnosti k tomu levá není určena. Pokud jste opravdu chtěli použít LEFT() k tomu budete muset udělat nějaký trik, například použít RIGHT() funkce jako jeho první argument.

Příklad:

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

Výsledek:

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

Přijímané typy dat

LEFT() funkce nepřijímá text a ntext datové typy jako jeho první argument. Podporuje všechny ostatní datové typy, které lze převést na varchar nebo nvarchar .

SUBSTRING() funkce na druhé straně přijímá znak , binární , text , ntext a obrázek výrazy.

Vrácené hodnoty

LEFT() vrátí varchar když je prvním argumentem znakový datový typ jiný než Unicode, a nvarchar když se jedná o znakový datový typ Unicode.

Vrácené hodnoty pro SUBSTRING() jsou následující:

Výraz (první argument) Typ návratu
char /varchar /text varchar
nchar /nvarchar /ntext nvarchar
binární /varbinární /obrázek varbinární

  1. PostgreSQL výukový program pro začátečníky – vše, co potřebujete vědět o PostgreSQL

  2. Správný dotaz pro získání aktuálního počtu připojení v PostgreSQL DB

  3. Pochopení datových typů SQL – vše, co potřebujete vědět o datových typech SQL

  4. Seznam všech dočasných tabulek v SQLite