В среди на 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 |
двоичен /варбинана /изображение | варбинна |