Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

LEFT() vs SUBSTRING() w SQL Server:jaka jest różnica?

W środowiskach SQL Server dwie z wielu funkcji łańcuchowych, którymi dysponujemy, to LEFT() i SUBSTRING() .

Te funkcje działają podobnie, ale istnieją różnice. W tym artykule omówiono niektóre z głównych różnic między tymi funkcjami.

Definicja

Najpierw spójrzmy, co robi każda funkcja:

LEFT()
Zwraca lewą część ciągu znaków o określonej liczbie znaków.
SUBSTRING()
Zwraca część wyrażenia znakowego, binarnego, tekstowego lub graficznego.

Więc LEFT() zwraca tylko lewą część ciągu.

SUBSTRING() po prostu zwraca część wyrażenia (nie ogranicza się to tylko do lewej części – może być lewa, prawa lub gdzieś pośrodku).

Przykład 1 – ten sam wynik

Obie funkcje mogą być użyte do zwrócenia określonej liczby znaków od lewej.

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

Wynik:

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

Jednak LEFT() jest bardziej zwięzły. Wynika to częściowo z faktu, że w nazwie funkcji jest mniej znaków.

Ale to także ze względu na składnię. LEFT() funkcja wymaga tylko dwóch argumentów (wyrażenia i liczby znaków do zwrócenia), podczas gdy SUBSTRING() wymaga trzech argumentów (wyrażenia, pozycji początkowej i liczby znaków do powrotu z tej pozycji początkowej).

Przykład 2 – Kiedy PODŁAŃCUCH jest lepszy

SUBSTRING() jest znacznie lepszy niż LEFT() przy pobieraniu danych ze środka ciągu. Właściwie lewica nie jest do tego przeznaczona. Jeśli naprawdę chciałeś użyć LEFT() aby to zrobić, musisz wykonać kilka sztuczek, na przykład użyć RIGHT() funkcja jako pierwszy argument.

Przykład:

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

Wynik:

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

Akceptowane typy danych

LEFT() funkcja nie akceptuje tekstu i ntext typy danych jako pierwszy argument. Obsługuje wszystkie inne typy danych, które można przekonwertować na varchar lub nvarchar .

SUBSTRING() funkcja z drugiej strony, akceptuje znak , binarny , tekst , ntekst i obraz wyrażenia.

Zwracane wartości

LEFT() zwraca varchar gdy pierwszy argument jest typem danych innym niż Unicode i nvarchar gdy jest to typ danych znaków Unicode.

Zwracane wartości dla SUBSTRING() są następujące:

Wyrażenie (pierwszy argument) Typ zwrotu
znak /warcha /tekst varchar
nchar /nvarchar /ntekst nvarchar
binarny /zmienna /obraz zmienna

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przesyłanie strumieniowe obrazów z baz danych za pomocą HttpHandler

  2. Co to jest zaufane połączenie?

  3. Jak zapobiec aktualizacjom tabeli, z wyjątkiem jednej sytuacji

  4. Jak przekonwertować kolumnę znacznika czasu programu SQL Server na format daty i godziny?

  5. Jak określić niezmienną kulturę podczas korzystania z FORMAT() w SQL Server