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