Подстрока sql: SUBSTRING (Transact-SQL) — SQL Server

Содержание

Регистрозависимый поиск в SQL — Разработка на vc.ru

SQL запрос, казалось бы, написан абсолютно ясно и прозрачно, но результат не тот, который ожидаем. О маленьких деталях в работе с большими символами пойдёт речь.

2516
просмотров

В рамках работы над проектом одна из задач заключалась в том, что из огромного массива необходимо было выбрать карты с определённым кодом. Коды карт могут иметь значения как символы типа ‘+’или ‘0’, так и символы — буквы алфавита, в том числе строчные и прописные. При работе с кодами карт в виде цифр и спецсимволов проблем не возникло, НО. В процессе работы с кодами карт в виде символов — букв алфавита разного регистра мы столкнулись с проблемой. Наш простой запрос выдавал нам все данные, независимо от регистра:

select card, code, value
from table.produkt_code
where code =’m’

итог:

Кто и почему не понимает нас?

Оказалось, что на нашем сервере установлены параметры сортировки без учёта регистра.

Я нашла несколько способов решения и хочу поделиться с вами:

Первый способ.

Использование функции ASCII, которая возвращает числовой код крайнего левого символа строкового выражения, являющегося аргументом функции.

Синтаксис функции ASCII( single_character) .

Например, if ASCII(code)=ASCII(‘m’) is TRUE – значение нашего аргумента строчное;

Второй способ.

Мы можем написать запрос сравнения с учетом регистра изменив регистр нашего аргумента и используя collate:

select
code,
code_reg= case
when
code= UPPER(code) collate Latin1_General_CS_AI
then ‘UPPER’
else ‘LOWER’
end
from table.produkt_code

Третий способ.

Функция Unicode, которая возвращает юникод первого значения.

Синтаксис функции: unicode (<строковое выражение>).

Возможны варианты использования значений юникодов:

Мы можем создать таблицу- справочник юникодов наших кодов продуктов;

select unicode(substring(‘Y’,1,1)) Y
, unicode(substring(‘y’,1,1)) y
, unicode(substring(‘F’,1,1)) F
, unicode(substring(‘f’,1,1)) f
, unicode(substring(‘M’,1,1)) M
, unicode(substring(‘m’,1,1)) m
, unicode(substring(‘P’,1,1)) P
, unicode(substring(‘p’,1,1)) p
, unicode(substring(‘R’,1,1)) R
, unicode(substring(‘r’,1,1)) r
, unicode(substring(‘D’,1,1)) D
, unicode(substring(‘d’,1,1)) d
Into table. product_spr

Получим значения юникодов наших аргументов:

либо вычислить юникод изменив регистр нашего аргумента и сравнить с юникодом нашего аргумента;

select
code, code_reg= case
when unicode(upper(code))= unicode(code)
then ‘UPPER’
else ‘LOWER’
end
from table.produkt_code

В результате получим информацию о регистре значения кода для дальнейшего анализа и использования в запросе.

ещё один путь- сразу в коде сравнивать вычисляемое значение с уже известным нам числовым, если их немного и это не трудоёмко.

if Unicode(code)=109 then ‘m-строчная’
if Unicode(code)=77 then ‘M-ПРОПИСНАЯ’

Именно этот вариант я применила в своей работе, т.к. количество необходимых символов для сравнения было невелико.

Думаю, что предпочтительный вариант каждый определит для себя исходя из специфики задачи и, не исключено, что найдутся другие пути решения, ведь SQL –язык многогранный. Надеюсь, мой опыт будет полезен в работе.

Функция подстроки SQL Server [9 примеров]

В этом руководстве по SQL Server 2019 мы обсудим, что такое Функция подстроки SQL Server , Левая подстрока SQL Server, , и рассмотрим приведенную ниже тему.

  • Подстрока SQL Server
  • Подстрока SQL Server перед символом
  • Подстрока SQL Server после символа
  • Подстрока SQL Server последние 4 символа
  • Подстрока SQL Server между двумя символами
  • Подстрока SQL Server против производительности
  • Индекс подстроки SQL Server
  • Charindex подстроки SQL Server
  • Левая подстрока SQL Server
  • Подстрока SQL Server в разделе where

Содержание

Функция подстроки SQL Server является подстрокой SQL Server()

функция, которая используется для извлечения определенной части из любой конкретной строки на основе требований пользователя. Функция подстроки извлекает строку предопределенной длины, начиная с заданного места во входной строке.

Синтаксис для SQL Server Substring()

 SUBSTRING(выражение, начало, длина) 
  • В приведенном выше синтаксисе выражение может быть определено любым символом, текстом, изображением или двоичным значением. Это исходная строка, из которой мы попытаемся извлечь подстроки с помощью функции substring().
  • Начало в приведенном выше синтаксисе представляет собой целочисленное поле, которое используется для определения позиции во входной строке или выражении , откуда должна начинаться новая подстрока.
  • Если заданное значение start меньше 1, результирующее выражение будет начинаться с первого символа в выражении. И если определенное начало больше, чем количество символов во входном выражении , возвращается выражение нулевой длины.
  • Длина в приведенном выше синтаксисе — это положительное целочисленное поле, которое используется для представления общей ожидаемой длины результирующей подстроки из данной строки.
  • Если сумма start и length превышает количество символов в выражении , то возвращается все входное выражение , начиная с start .

Читать: Как установить SQL Server 2019 Express на Windows 10 шаг за шагом

Как использовать функцию Substring() в SQL Server

Функция Substring() в SQL Server

Для примеров, которые я использовал здесь, sql server 2019 и студия управления сервером sql.

  1. Без использования табличных данных в SQL Server
 SELECT SUBSTRING('SQLSERVERGUIDES',1,3) AS NewString; 

Запрос подстроки без использования данных таблицы

В приведенном выше примере мы определили выражение как « SQLSERVERGUIDES », из которого мы хотим найти подстроку длиной 3 , начиная с 1 -го символа в выражении. И мы также хотим, чтобы результат появился в столбце NewString . он вернет следующий вывод.

Substring Result

Теперь давайте возьмем еще один пример для лучшего понимания.

 SELECT SUBSTRING('Соединенные Штаты Америки',1,13) AS NewString; 

В приведенном выше примере мы определили выражение как « Соединенные Штаты Америки », из которого мы хотим найти подстроку длиной 13 , начиная с 1 -го символа в выражении. И мы также хотим, чтобы результат появился в столбце NewString . он вернет следующий вывод.

Запрос подстроки без использования данных таблицы пример

2. Использование данных таблицы для поиска подстроки

Для этой демонстрации мы берем таблицу случайных данных в SQL Server, которая показана ниже.

Данные случайной выборки

Теперь из приведенных выше данных мы будем использовать столбец first_name и попытаемся найти из него первые 2 символа, используя следующий запрос.

 ВЫБРАТЬ first_name,SUBSTRING(first_name, 1, 2) AS NewString
ИЗ случайных данных; 

Запрос подстроки с использованием данных таблицы

В приведенном выше примере сначала мы выбираем столбец first_name, а затем выбираем подстроку из первых двух символов из столбца first_name. А также присвоение результата подстроки новому столбцу с именем NewString . Он вернет следующий вывод.

Substring Result

Вот как использовать функцию Substring() в SQL Server 2019.

Читать: Как экспортировать данные из SQL Server в Excel

Индекс подстроки SQL Server

В SQL Server CHARINDEX() — это простая функция, которая используется для поиска позиции подстроки внутри заданной входной строки. И эта функция начинает поиск подстроки из указанного места и возвращает ее начальную позицию. Charindex() по своей природе не чувствителен к регистру.

Синтаксис для SQL Server Charindex()

 CHARINDEX( expressionToFind , expressionToSearch [ , start_location ] ) 
  • В приведенном выше синтаксисе expressionToFind — это выражение подстроки, начальную позицию которого пользователь хочет найти из заданного ввода нить. И он может иметь до 8000 символов.
  • expressionToSearch в приведенном выше синтаксисе используется для определения входной строки, из которой будет выполняться поиск выражения подстроки.
  • start_location в приведенном выше синтаксисе — это целочисленное поле, которое используется для определения позиции в данной входной строке, с которой должен начаться поиск. И это необязательный параметр. Если start_location отрицателен, равен нулю (0) или не определен, поиск начинается с начала заданной входной строки.
  • Если функция CHARINDEX() не может найти expressionToFind в пределах expressionToSearch , она вернет 0.

Подстрока SQL Server charindex example-1

Запрос Charindex в SQL Server

В приведенном выше примере мы определили expressionToSearch как « sqlserverguides » и expressionToFind как « g ». Итак, мы пытаемся найти начальную позицию символа «9».0003 г » в данном выражении « sqlserverguides ». А также присвоение результата новому столбцу с именем MatchPosition .

Приведенный выше запрос вернет следующий результат.

Результат запроса Charindex

Подстрока SQL Server, пример charindex-2

 SELECT CHARINDEX('r', 'Нью-Йорк') AS MatchPosition; 

В приведенном выше примере мы определили выражение ToSearch как « New York » и выражениеToFind  как « r ». Итак, мы пытаемся найти начальную позицию символа « r » в заданном выражении « Нью-Йорк ». А также присвоение результата новому столбцу с именем MatchPosition .

Приведенный выше запрос вернет следующий результат.

Пример charindex подстроки SQL Server

Вот как использовать charindex подстроки SQL Server .

Читать: Как создать базу данных в SQL Server 2019

Как извлечь подстроку до или после символа

Теперь могут быть сценарии, в которых нам нужно либо найти подстроку перед определенным символом, либо найти подстроку после символа в заданном выражении. И для достижения этих результатов мы можем использовать комбинацию функций Substring() и Charindex().

Функция Substring сначала находит определенную часть заданной строки, а затем возвращает ее. В то время как функция Charindex находит и возвращает начальную позицию подстроки.

SQL Server Подстрока перед символом

Давайте разберемся с «Подстрокой SQL Server перед символом» на небольшом примере. Для этой демонстрации мы используем ту же таблицу случайных выборок в SQL Server, но теперь мы собираемся использовать поле электронной почты из нее. И попробуйте извлечь подстроку перед « @ » в поле электронной почты.

 ВЫБЕРИТЕ электронную почту, SUBSTRING(email, 0, CHARINDEX('@', email, 1)) КАК Имя
FROM RandomData 

Подстрока SQL Server перед символом

Теперь для лучшего понимания давайте разобьем приведенный выше запрос на 3 части

  1. Оператор Select
  2. Функция подстроки
  3. Функция Charindex

Сначала мы используем функцию Charindex , чтобы найти позицию « @ » для каждой записи электронной почты в таблице. И затем мы используем вывод этой позиции как длину подстроки в функции Substring . В конце концов, мы используем оператор SELECT , чтобы выбрать исходное поле электронной почты и поле электронной почты подстроки в результате запроса. Он вернет следующий вывод.

Окончательный вывод

Подстрока SQL Server после символа

Теперь для демонстрации «Подстрока SQL Server после символа» мы собираемся извлечь подстроку после символа «@» в поле электронной почты. И для этого мы также должны использовать функцию LEN(), которая возвращает общую длину входной строки.

 ВЫБЕРИТЕ электронную почту, SUBSTRING(электронная почта,CHARINDEX('@', электронная почта)+1,LEN(электронная почта))
FROM RandomData 

Запрос для извлечения подстроки после символа

Опять же, давайте разобьем приведенный выше запрос на 4 части

  1. Оператор выбора
  2. Функция подстроки
  3. Функция Charindex
  4. Функция LEN()

Сначала мы используем функцию Charindex в функции Substring, чтобы найти точную позицию символа «@» для каждой записи электронной почты. И затем мы добавляем к нему 1, чтобы определить начало подстроки после символа «@».

После этого мы используем функцию LEN() для определения длины подстроки. В последнем мы используем Оператор SELECT для выбора исходного поля электронной почты и подстроки поля электронной почты в результате запроса. Он вернет следующий вывод.

Подстрока SQL Server после символа

Вот как извлечь подстроку до или после символа в SQL Server 2019.

Читать: Примеры расширенных хранимых процедур в SQL Server

Подстрока SQL Server, последние 4 символа

В SQL Server для извлечения подстрока из последних 4 символов, мы можем использовать ПРАВО() функция.

SQL Server Функция подстроки RIGHT

Функция Right() в SQL Server используется для извлечения определенного количества символов из заданной входной строки, начиная справа.

Имеет следующий синтаксис.

 ПРАВО(символьное_выражение , целочисленное_выражение ) 
  • Функция Right() принимает 2 аргумента: символьное_выражение и целочисленное_выражение .
  • character_expression — это набор символов или строка, из которой пользователь хочет извлечь подстроку. Это может быть столбец, переменная или константа.
  • integer_expression — это целочисленное значение, которое используется для определения количества символов, которые нужно извлечь справа от character_expression .
  • Если integer_expression отрицательное, будет возвращена ошибка. И если integer_expression больше числа character_expression вернет только character_expression .

Пример Для функции правой подстроки

 SELECT RIGHT('SQLServerGuides', 4) AS Last_4_Characters; 

Запрос для извлечения последних 4 символов в SQL Server

В приведенном выше примере мы определили character_expression как « SQLServerGuides » и integer_expression как 4 , что означает, что этот запрос вернет последние 4 символа из « SQLServerGuides ”выражение. И мы также хотим, чтобы результат попал в столбцы Last_4_Characters . После выполнения получим следующий результат.

Последние 4 символа подстроки sql server

Вот как последние 4 символа подстроки в sql server 2019 .

Читать: Как создать таблицу в SQL Server Management Studio

SQL Server Подстрока между двумя символами

В SQL Server, если пользователь хочет извлечь подстроку между двумя разными символами, прямой функции нет. Поэтому для достижения этого результата мы должны использовать комбинацию функций Substring и Charindex. Давайте разберемся с реализацией на примере.

В целях демонстрации давайте рассмотрим следующий столбец случайного кода, который состоит из 6-значного случайного кода, начиная с символа «$» и заканчивая «#».

Random Code Column

Теперь мы попытаемся извлечь код между « $ » и « # », используя следующий запрос.

 ВЫБЕРИТЕ Код, ПОДСТРОКА(
       Код,
       CHARINDEX('$', Код)+1
       CHARINDEX('#', код)-CHARINDEX('$', код)-1
       ) Как результат
       FROM RandomCode 

Запрос на поиск подстроки между двумя символами

В приведенном выше примере сначала мы определили входное выражение в функции Substring() как Code , который представляет собой столбец, содержащий случайные коды. После этого мы используем функцию Charindex(), чтобы сначала найти позицию « $ », а затем, используя позицию « $ », мы определяем начало подстроки на единицу больше, чем позиция из «$».

Затем мы используем положение символов «#» и «$» для определения длины подстроки в функции Substring(). В последнем мы используем Оператор SELECT для проецирования исходного столбца и нового столбца подстроки.

Мы получим следующий вывод из приведенного выше запроса.

Подстрока между 2 символами

Вот как сделать подстроку между 2 символами в SQL Server 2019/2017.

Чтение: SQL Server Преобразование строки в дату

SQL Server Подстрока в конец строки

Теперь, чтобы извлечь подстроку, которая идет до конца исходной входной строки, мы должны определить длину исходной строки как параметр длины в функции Substring(). И для этого мы можем использовать ДЛСТР() функция.

Функция LEN() используется для получения общей длины заданной входной строки.

Например, :

 SELECT SUBSTRING('SQLServerGuides', 4, LEN('SQLServerGuides')) 

Запрос подстроки до конца строки

В приведенном выше запросе мы дали « SQLServerGuides » в качестве входных данных выражение, а затем мы определяем, что начало подстроки должно быть с 4-го символа. В последнем мы использовали LEN() для определения общей длины подстроки. Поэтому после выполнения он вернет следующий вывод.

Подстрока до конца строки

Чтение: обработка исключений в SQL Server

Индекс подстроки SQL Server

В SQL Server в основном есть две функции, которые используются для поиска индекса или позиции конкретной подстроки.

  1. Функция Charindex()
  2. Функция Patindex

CharIndex и PatIndex 9Обе функции 0004 классифицируются как строковые функции в SQL Server с некоторыми незначительными отличиями. И обе функции принимают 2 аргумента. Обе функции сначала ищут подстроку в заданном строковом выражении, а затем возвращают позицию в виде целочисленного значения.

На первый взгляд кажется, что эти функции выполняют одно и то же, и во многих случаях мы можем использовать любую из них, какую захотим.

Однако есть несколько характеристик, которые могут повлиять на выбор функции в определенных ситуациях. Ниже приводится их краткое изложение:

  1. Функция Charindex() : Эта функция используется для поиска выражения в другом выражении и возвращает начальную позицию первого выражения, если оно найдено. Эта функция также имеет необязательный третий аргумент, в котором пользователь может указать начальную позицию поиска. Однако функция Patindex() не имеет третьего аргумента.

Синтаксис функции Charindex()

 CHARINDEX(выражениеToFind, выражениеToSearch [ start_location]) 

Пример функции Charindex() :

 SELECT CHARINDEX('L', 'SQLServerGuides', 1) AS Result 

Пример функции Charindex()

2. Функция Patindex() : Эта функция используется для поиск определенного шаблона в заданном входном выражении. И он возвращает начальную позицию первого вхождения шаблона. Если эта функция не найдет шаблона в допустимом выражении, она вернет ноль (0).

Функция Patindex() также позволяет пользователям использовать подстановочные знаки (%, _, 9 ) для поиска любого шаблона. Однако функция Charindex() не поддерживает подстановочные знаки.

Синтаксис для Функция Patindex():

 PATINDEX( '%pattern%' , выражение ) 

Пример для SQLServerGuides’) AS Результат Пример для функции Patindex()

Чтение арифметических операторов в SQL Server

Сравнение подстроки SQL Server и аналогичной производительности

LIKE в SQL Server

  • LIKE — это оператор в SQL Server, который используется для поиска определенного шаблона в заданном строковом выражении.
  • Шаблон в операторе LIKE может включать как обычные символы, так и подстановочные знаки. Обычные символы должны точно соответствовать символам, указанным в строке символов. Принимая во внимание, что подстановочные знаки могут соответствовать любой части строки символов.
  • Оператор LIKE является более гибким, чем операторы сравнения строк «=» и «!=», поскольку в нем можно использовать подстановочные знаки. И он возвращает логическое выражение (ИСТИНА / ЛОЖЬ) всякий раз, когда найдено совпадение с образцом.

Синтаксис оператора LIKE

 выражение LIKE шаблон [ ESCAPE 'escape_character' ] 

Выражение в приведенном выше синтаксисе может быть любым символьным выражением, из которого пользователь хочет извлечь шаблон.

Шаблон — это определенная строка символов, которая используется для поиска в заданном выражении. Максимальный размер шаблона составляет 8000 байт. И мы можем использовать в нем 4 разных типа подстановочных знаков. Каждый подстановочный знак имеет следующее значение:

9abc] будет соответствовать любому символу, который не является символом a, b или c)
. один символ
[ ] Это позволяет нам сопоставлять любой символ, указанный в скобках [ ] (например, [abc] будет соответствовать символам a, b или c)

Сравнение подстроки SQL Server и аналогичной производительности

escaped_character в приведенном выше синтаксисе является необязательным параметром. Это помогает проверить буквальные экземпляры подстановочного знака, такого как « % » или « _ ».

Пример оператора LIKE

 SELECT * FROM Mock_data WHERE last_name LIKE 'M%'; 

Пример для оператора LIKE

В приведенном выше примере мы используем % подстановочный знак для поиска всех сущностей, у которых last_name начинается с ‘ M ’.

Подстрока в SQL Server

Substring() — это функция, которая используется для извлечения любой конкретной части из конкретной строки в зависимости от требований пользователя. Функция подстроки извлекает подстроку предопределенной длины, начиная с заданного места в заданном строковом выражении.

Подробное описание подстроки SQL Server уже упоминалось в начале этого поста.

Большая разница в производительности между Substring() и LIKE

  • Мы можем использовать подстановочные знаки в операторе LIKE, но не можем использовать их в функции Substring().
  • Оператор Like возвращает логическое выражение ( TRUE или FALSE ), тогда как Substring возвращает символьное выражение или подстроку из исходного.
  • Из-за использования подстановочных знаков в операторе Like оператор Like занимает больше времени на выполнение запроса, чем функция подстроки.

Читать: Как создавать функции в SQL Server Management Studio

SQL Server LEFT Функция подстроки

LEFT() — это функция подстроки, которая используется для извлечения некоторых символов из заданного строкового выражения, начиная слева или начало. И он имеет следующий синтаксис.

 ЛЕВЫЙ( символьное_выражение , целочисленное_выражение ) 
  • Функция Left() принимает 2 аргумента, символьное_выражение и целое_выражение .
  • character_expression — это входная строка, из которой пользователь хочет извлечь подстроку. Это может быть столбец, переменная или константа.
  • integer_expression — это положительное целое значение, которое используется для определения количества символов, которые должны быть извлечены слева от character_expression .
  • Если integer_expression отрицательное, будет возвращена ошибка. И если integer_expression больше, чем число character_expression , он вернет только character_expression .

Пример Для функции левой подстроки

 SELECT LEFT('SQLServerGuides', 3) AS Result 

Функция Left() Пример

и integer_expression как 3 , что означает, что этот запрос вернет первые 3 символа из « SQLServerGuides ”выражение. И мы также хотим, чтобы результат попал в столбцы Result . После выполнения получим следующий результат.

Окончательный вывод

Это пример функции SQL Server LEFT substring.

Функция подстроки SQL Server в предложении where

Мы также можем использовать функцию Substring() в предложении where оператора. А для этого нам нужно только знать, что искать в строке, чтобы начать. Давайте разберемся с этим на примере.

Итак, для демонстрации давайте рассмотрим следующую таблицу случайных данных в SQL Server

Sample Table

Теперь мы собираемся извлечь сущности, чьи first_name заканчиваются символом « ta ». И для реализации результата мы выполним следующий запрос.

 ВЫБРАТЬ РАЗЛИЧНЫЕ имя, фамилия
ОТ MOCK_DATA
WHERE SUBSTRING(first_name, LEN(first_name)-1, 2) = 'ta' 

Запрос подстроки в предложении where

В приведенном выше запросе мы используем функцию Substring() для извлечения последних 2 символов из столбца first_name и затем мы используем эту функцию подстроки в предложении where, чтобы найти объекты, в которых последние 2 символа в 9Столбец 0003 first_name равен « ta ». После успешного выполнения он вернет следующий результат.

Результат запроса

Вот как использовать функцию подстроки SQL Server в разделе where .

Вам может понравиться:

  • Функция преобразования SQL Server
  • Преобразование целого числа SQL Server в строку

0003 Left Substring, и будет охватывать тему ниже.

  • Подстрока SQL Server
  • Подстрока SQL Server перед символом
  • Подстрока SQL Server после символа
  • Подстрока SQL Server последние 4 символа
  • Подстрока SQL Server между двумя символами Индекс подстроки
  • Подстрока SQL Server Charindex
  • Левая подстрока SQL Server
  • Подстрока SQL Server в пункте where

Биджай

Я Биджай, имею более чем 15-летний опыт работы в индустрии программного обеспечения. За это время я работал с MariaDB и использовал ее во многих проектах. Большинство наших читателей из США, Канады, Великобритании, Австралии, Новой Зеландии и т. д.

Хотите изучить MariaDB? Ознакомьтесь со всеми статьями и руководствами, которые я написал для MariaDB. Кроме того, я Microsoft MVP.

LEFT() и SUBSTRING() в SQL Server: в чем разница?

В средах SQL Server две из множества строковых функций, находящихся в нашем распоряжении, — это LEFT() и SUBSTRING() .

Эти функции похожи, но есть отличия. В этой статье рассматриваются некоторые основные различия между этими функциями.

Определение

Во-первых, давайте посмотрим, что делает каждая функция:

LEFT()
Возвращает левую часть строки символов с указанным количеством символов.
ПОДСТРОКА()
Возвращает часть символьного, двоичного, текстового или графического выражения.

Итак, LEFT() возвращает только левую часть строки.

SUBSTRING() просто возвращает часть выражения (не ограничиваясь только левой частью — она может быть левой, правой или где-то посередине).

Пример 1 — тот же результат

Обе функции могут использоваться для возврата определенного количества символов слева.

 ВЫБОР
  ВЛЕВО('Ведро', 6) КАК [ВЛЕВО],
  SUBSTRING('Buckethead', 1, 6) AS [SUBSTRING];
 

Результат:

 +--------+-------------+
| ВЛЕВО | ПОДСТРОКА |
|--------+-------------|
| Ведро | Ведро |
+--------+-------------+
 

Однако LEFT() является более кратким. Отчасти это связано с тем, что в имени функции меньше символов.

Но это также из-за синтаксиса. LEFT() Функция требует только два аргумента (выражение и количество возвращаемых символов), тогда как SUBSTRING() требует три аргумента (выражение, начальная позиция и количество символов, возвращаемых из этой начальной позиции). должность).

Пример 2. Когда SUBSTRING лучше

SUBSTRING() намного лучше, чем LEFT() при захвате данных из середины строки. На самом деле, левый не предназначен для этого. Если вы действительно хотели использовать LEFT() , чтобы сделать это, вам придется проделать некоторые хитрости, например, использовать функцию RIGHT() в качестве первого аргумента.

Пример:

 ВЫБОР
  ВЛЕВО(ВПРАВО('Ведро', 7), 3) КАК [ВЛЕВО/ВПРАВО],
  SUBSTRING('Buckethead', 4, 3) AS [SUBSTRING];
 

Результат:

 +--------------+-------------+
| ВЛЕВО/ВПРАВО | ПОДСТРОКА |
|--------------+--------------|
| кет | кет |
+--------------+--------------+
 

Допустимые типы данных

Функция LEFT() не принимает типы данных text и ntext в качестве первого аргумента. Он поддерживает все другие типы данных, которые можно преобразовать в varchar или nvarchar .

Функция SUBSTRING() , с другой стороны, принимает символьных , двоичных , текстовых , ntext и изображений выражений.