Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

LEFT() срещу SUBSTRING() в SQL Server:Каква е разликата?

В среди на SQL Server две от многото низови функции, с които разполагаме, са LEFT() и SUBSTRING() .

Тези функции правят подобно нещо, но има разлики. Тази статия разглежда някои от основните разлики между тези функции.

Определение

Първо, нека разгледаме какво прави всяка функция:

LEFT()
Връща лявата част на низ от знаци с посочения брой знаци.
SUBSTRING()
Връща част от символен, двоичен, текстов или графичен израз.

Така че LEFT() връща само лявата част на низа.

SUBSTRING() просто връща част от израза (не се ограничава само до лявата част – може да е лява, дясна или някъде по средата).

Пример 1 – Същият резултат

И двете функции могат да се използват за връщане на определен брой знаци отляво.

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

Резултат:

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

Въпреки това, LEFT() е по-сбит. Това отчасти се дължи на факта, че има по-малко знаци в името на функцията.

Но това се дължи и на синтаксиса. LEFT() функцията изисква само два аргумента (израза и броя на знаците за връщане), докато SUBSTRING() изисква три аргумента (изразът, началната позиция и броят на знаците за връщане от тази начална позиция).

Пример 2 – Когато SUBSTRING е по-добър

SUBSTRING() е много по-добре от LEFT() при грабване на данни от средата на низа. Всъщност лявото не е предназначено за това. Ако наистина искате да използвате LEFT() за да направите това, ще трябва да направите някои трикове, като например да използвате RIGHT() функция като негов първи аргумент.

Пример:

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

Резултат:

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

Приети типове данни

LEFT() функцията не приема текста и ntext типове данни като негов първи аргумент. Той поддържа всички други типове данни, които могат да бъдат преобразувани в varchar или nvarchar .

SUBSTRING() функция от друга страна, приема знак , двоичен , текст , ntext , иизображение изрази.

Върнати стойности

LEFT() връща varchar когато първият аргумент е символен тип данни, различен от Unicode, и nvarchar когато е тип данни за символи в Unicode.

Върнатите стойности за SUBSTRING() са както следва:

Израз (първи аргумент) Тип връщане
char /варчар /текст varchar
нчар /nvarchar /ntext nvarchar
двоичен /варбинана /изображение варбинна

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server :Колони към редове

  2. Ефективно преобразуване на дати между UTC и местно (т.е. PST) време в SQL 2005

  3. SQL Server 2016:Импортиране на данни

  4. В реферираната таблица няма първични или кандидат-ключове, които да съответстват на списъка с референтни колони във външния ключ

  5. Мониторинг на продължителността на живота на страницата в SQL Server