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í |