Как в запросе найти подстроку строки

Автор уроков и преподаватель школы: Владимир Милькин

Функции для работы со строками в запросе

Прямо скажем механизмов для работы со строками в запросах 1С мало. Во-первых, строки можно складывать. Во-вторых, от строки можно взять подстроку. Во-третьих, строки можно сравнивать, в том числе по шаблону. Вот пожалуй и всё, что можно делать со строками. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Когда мы говорим строка в запросе, то имеется в виду либо строковая константа:

ВЫБРАТЬ
    "Жизнь прекрасна!"

либо реквизит таблицы, у которого тип СТРОКА:

ВЫБРАТЬ
    Наименование
ИЗ
    Справочник.Еда

Сложение строк

Для сложения используется операция +

ВЫБРАТЬ
    "Еда: " + Наименование
ИЗ
    Справочник.Еда

04

Функция ПОДСТРОКА

Данная функция предназначена для выделения подстроки из строки.

В качестве параметров принимает:

  • строку, из которой необходимо выделить подстроку;
  • позицию символа, с которого начинается выделяемая из строки подстрока;
  • длину  выделяемой подстроки.
ВЫБРАТЬ
    ПОДСТРОКА("1234567890", 1, 5)

02

ВЫБРАТЬ
    ПОДСТРОКА("1234567890", 3, 4)

03

ВЫБРАТЬ
    Наименование,
    ПОДСТРОКА(Наименование, 1, 2)
ИЗ
    Справочник.Еда

04

Функция ПОДОБНО

Если нужно убедиться, что строковый реквизит соответствует определённым критериям мы его сравниваем. Например, так:

ВЫБРАТЬ
    Наименование
ИЗ
    Справочник.Еда
ГДЕ
    Наименование = "Лимон"

05

А что, если нужно более хитрое сравнение? Не просто на равенство или неравенство, а на подобие определенному шаблону? Вот как раз для этого и создана функция ПОДОБНО.

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

Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

Давайте уже рассмотрим пример, чтобы ситуация прояснилась:

ВЫБРАТЬ
    Наименование
ИЗ
    Справочник.Еда
ГДЕ
    Наименование ПОДОБНО "[К]%"

Результатом выполнения данного запроса будет вся еда, наименование которой начинается на букву “К”:

06

Думаю вы догадались, что здесь вся “хитрость” сосредоточена в строке шаблона “[К]%”. Буква “К” в квадратных скобках в данном случае означает, что первым символом наименования должна быть буква “К”. Знак “%”, идущий следом означает, что после буквы “К” могут идти (или не идти) любые символы в любом количестве. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Конечно, я всё это не из головы придумал. При формировании строки шаблона есть определенные правила, которые нужно соблюдать:

  • % означает любое количество произвольных символов
  • _ означает один произвольный символ
  • [] означает любой одиночный символ, перечисленный внутри скобок
  • [^] означает любой одиночный символ, кроме тех, что перечислены внутри скобок после ^

Примеры шаблонов с пояснениями:

“%” абсолютно любая строка (в том числе пустая):

07

“___” строка из трёх символов (любых):

08

“[ЧЛ]%[ЫН]” строка, начинающаяся с буквы Ч или Л и оканчивающаяся на Ы или Н:

09

“[^К]%” строка, не содержащая в начале букву К:

10

“[А-К]%” строка, начинающаяся с буквы из диапазона с А по К:

11

Обратите внимание на приём, использованный в шаблоне “[А-К]%”. Вместо того, чтобы перечислять все буквы от А до К, например так “[АБВГДЕЁЖЗИЙК]%” мы указали диапазон значений через дефис. Квадратные скобки это позволяют делать.

Пройдите тест

а) Напишите запрос, который выводит все заказы клиентов (таблица Документ.ЗаказКлиента) и первые три буквы имени клиента в каждом заказе:

Описание

Существует несколько видов взаимодействия со строками в языке запросов 1С: конкатенация, выбор подстроки и сравнение.

Конкатенация

Конкатенация строк в языке запросов реализована с помощью оператора “+“.
Пример:

ВЫБРАТЬ

    “а” + “б” // Результат “аб”

или например сложим две строки, только одну получим из таблицы БД

ВЫБРАТЬ

    “Товар: “ + Номеклатура.Наименование  КАК Наименование

Из Справочник.Номенклатура КАК Номеклатура

В результате получим все наименования из справочника Номенклатура, к которым вначале добавилась строка “Товар: “. Например “Товар: Coca-Cola”.

или например сложим две строки, только одну строку получим выражением ПРАВ()

ВЫБРАТЬ

     “Товар: ” + Выразить(Прав(Номеклатура.Код,1) как строка(1))  КАК Наименование

Из Справочник.Номенклатура КАК Номеклатура

В результате получим сумму строки “Товар: ” с последним символом кода номенклатуры.  Например “Товар: 1”.

Функции работы со строками

ПОДСТРОКА() 

Функция для работы со строками ПОДСТРОКА позволяет выделить часть строки, указанной длины из исходной строки, начиная с указанной позиции.

Синтаксис функции ПОДСТРОКА:
ПОДСТРОКА(<Строка>, <НачальнаяПозиция>, <Длина>).
Строка – Исходная строка, последовательность символов, слово.
Начальная позиция – Номер первого символа части строки, которую хотим получить в результате. Следует учитывать, что нумерация символов в строке начинается с 1, так же можно использовать и числа меньше 1 для указания начальной позиции, но все они в результате работы функции будут приведены к 1.
Длина – Количество символов после начальной позиции, которые должны попасть в результат.
Пример:

ВЫБРАТЬ

    ПОДСТРОКА(“Привет, мир!”, 9, 3) // Результат “мир”

В этом примере мы видим строку “Привет, мир!”. Если подсчитать количество символов в ней, то мы можем убедиться что их 12

В функцию ПОДСТРОКА первым параметром мы передали наше строковое значение, вторым параметром указали номер символа – 9, с которого хотим начать часть строки, а третьим параметром указали сколько символов после начала так же должно попасть в результирующую подстроку – 3. В результате выполнения функции платформа вернет нам подстроку “мир”. 

Строка()

Функция преобразует в строку значения примитивных типов. При попытке преобразования в строку значения не примитивного типа будет выдана ошибка выполнения запроса. Так же при применении к значению NULL, в результате так же будет NULL.
В качестве примера преобразуем к строке число 42

ВЫБРАТЬ

    СТРОКА(42) // Результат строка “42”

ДлинаСтроки()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция ДлинаСтроки возвращает количество символов в переданной строке в качестве значения.

Пример:

ВЫБРАТЬ

    ДлинаСтроки(“Привет, мир!”) // Результат 12

СокрЛ()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция СокрЛ удаляет незначащие символы, которые находятся слева от первого значащего символа в переданном строковом значении. Под незначащими символами понимаются пробелы(обычный, неразрывный), символы табуляции, перевода каретки и т.д.
Пример, в исходной строке есть пробельные символы вначале:

ВЫБРАТЬ

    СокрЛ(”   Привет, мир!”) // Результат “Привет, мир!”

СокрП()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

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

ВЫБРАТЬ

    СокрП(“Привет, мир!     “) // Результат “Привет, мир!”

СокрЛП()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция объединяет в себе две другие функции СокрЛ и СокрП, и удаляет незначащие символы стоящие перед первым значащим символом в строке и незначащие символы стоящие после последнего значащего символа в строке. Под незначащими символами понимаются пробелы(обычный, неразрывный), символы табуляции, перевода каретки и т.д.

Пример: в этой строке есть лишние пробелы вначале, середине и в конце. Пробелы слева и справа удалились, но в середине остались.

ВЫБРАТЬ

    СокрЛП(”   Привет,   мир!    “) // Результат “Привет,   мир!”

Лев()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

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

Синтаксис
Лев (Значение, ЧислоСимволов)

Пример, получим 6 символов с начала строки: 

ВЫБРАТЬ

    Лев(“Привет, мир!”, 6) // Результат “Привет”

Прав()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

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

Синтаксис
Прав(Значение, ЧислоСимволов)

Пример, получим 4 символа с конца строки:

 ВЫБРАТЬ

    Прав(“Привет, мир!”, 4) // Результат “мир!”

СтрНайти()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция производит поиск в строке и возвращает номер первого символа найденного вхождение искомой строки. Регистр при поиске не учитывается. Если ничего не найдено, то в результате вернется 0

Синтаксис

СтрНайти(СтроковоеЗначение, ИскомаяСтрока)

Пример:

ВЫБРАТЬ

    СтрНайти(“125435”, “3”), // Результат “5”

    СтрНайти(“125435”, “6”) // Результат “0”

ВРег()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция приводит все буквы содержащиеся в переданной строке в верхний регистр

Пример:

ВЫБРАТЬ

    ВРег(“Привет, мир!”) // Результат “ПРИВЕТ, МИР!”

НРег()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция приводит все буквы содержащиеся в переданной строке в нижний регистр

Пример:

ВЫБРАТЬ

    НРег(“Привет, мир!”) // Результат “привет, мир!”

СтрЗаменить()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция находит в переданном строковом значении все вхождения искомой строки и заменяет их на строку замены. Регистр не учитывается.
Синтаксис

СтрЗаменить(Строка, ПодстрокаПоиска, ПодстрокаЗамены)
 

Пример, заменим все буквы “р”, на буквы “л”:

ВЫБРАТЬ

    СтрЗаменить(“Привет, мир!”, “р”, “л”) // Результат “Пливет, мил!”

Сравнение строк

Сравнение строк может происходит с помощью оператора “=“. При сравнении регистр не учитывается.

Пример, сравним две строки:

ВЫБРАТЬ

    “Привет” = “привет” // Результат Истина

Оператор ПОДОБНО 

Предназначен для сравнения строковых выражений с заданным шаблоном. Результатом такой проверки будет «Ложь» или «Истина». Отличие от оператора “=” заключается в возможности использования спецсимволов. Шаблон оператора ПОДОБНО задается с помощью специальных символов:
%(процент) – символ или последовательность символов, имеющая любое количество произвольных символов
_(подчеркивание) – один произвольный символ
[ ] (квадратные скобки) – позволяют указать один или несколько символов, один из которых может содержаться в искомой строке
СПЕЦСИМВОЛ – Позволяет использовать один из перечисленных спецсимволов, в качестве обычного символа, если такой символ имеется в строке. 

Оператор ПОДОБНО можно использовать:

  • В полях выборки, как на примере выше
  • В условии ГДЕ
  • В конструкции ВЫБОР КОГДА

Синтаксис
<Строковое выражение> ПОДОБНО <“Шаблон”>

Пример, определим, что переданное значение является почтовым адресом для хостинга mail.ru, в данной строке первым символом идет нижнее подчеркивание, и потому нам пришлось использовать СПЕЦСИМВОЛ, для того, чтобы иметь возможность описать нашу строку с помощью шаблона: 

ВЫБРАТЬ

    “_test@mail.ru” Подобно “_%@mail.ru” СПЕЦСИМВОЛ “” // Результат Истина

Пример, найдем все элементы справочника Номенклатура, содержащие слово “Фрукт” в названии: 

ВЫБРАТЬ

    Номенклатура.Ссылка КАК Товар

Из Справочник.Номенклатура КАК Номенклатура         

ГДЕ Номенклатура.Наименование ПОДОБНО “%фрукт%”

Результатом будет набор элементов:

Товар
Фруктово-ореховая смесь
Фруктовый сок

При работе с базой данных SQL вам может понадобиться найти записи, содержащие определенные строки. В этой статье мы разберем, как искать строки и подстроки в MySQL и SQL Server.

Содержание

  • Использование операторов WHERE и LIKE для поиска подстроки
  • Поиск подстроки в SQL Server с помощью функции CHARINDEX
  • Поиск подстроки в SQL Server с помощью функции PATINDEX
  • MySQL-запрос для поиска подстроки с применением функции SUBSTRING_INDEX()

Я буду использовать таблицу products_data в базе данных products_schema. Выполнение команды SELECT * FROM products_data покажет мне все записи в таблице:

Поскольку я также буду показывать поиск подстроки в SQL Server, у меня есть таблица products_data в базе данных products:

Поиск подстроки при помощи операторов WHERE и LIKE

Оператор WHERE позволяет получить только те записи, которые удовлетворяют определенному условию. А оператор LIKE позволяет найти определенный шаблон в столбце. Эти два оператора можно комбинировать для поиска строки или подстроки.

Например, объединив WHERE с LIKE, я смог получить все товары, в которых есть слово «computer»:

SELECT * FROM products_data
WHERE product_name LIKE '%computer%'

Знаки процента слева и справа от «computer» указывают искать слово «computer» в конце, середине или начале строки.

Если поставить знак процента в начале подстроки, по которой вы ищете, это будет указанием найти такую подстроку, стоящую в конце строки. Например, выполнив следующий запрос, я получил все продукты, которые заканчиваются на «er»:

SELECT * FROM products_data
WHERE product_name LIKE '%er'

А если написать знак процента после искомой подстроки, это будет означать, что нужно найти такую подстроку, стоящую в начале строки. Например, я смог получить продукт, начинающийся на «lap», выполнив следующий запрос:

SELECT * FROM products_data
WHERE product_name LIKE 'lap%'

Этот метод также отлично работает в SQL Server:

Поиск подстроки в SQL Server с помощью функции CHARINDEX

CHARINDEX() — это функция SQL Server для поиска индекса подстроки в строке.

Функция CHARINDEX() принимает 3 аргумента: подстроку, строку и стартовую позицию для поиска. Синтаксис выглядит следующим образом:

CHARINDEX(substring, string, start_position)

Если функция находит совпадение, она возвращает индекс, по которому найдено совпадение, а если совпадение не найдено, возвращает 0. В отличие от многих других языков, отсчет в SQL начинается с единицы.

Пример:

SELECT CHARINDEX('free', 'free is the watchword of freeCodeCamp') position;

Как видите, слово «free» было найдено на позиции 1. Это потому, что на позиции 1 стоит его первая буква — «f»:

Можно задать поиск с конкретной позиции. Например, если указать в качестве позиции 25, SQL Server найдет совпадение, начиная с текста «freeCodeCamp»:

SELECT CHARINDEX('free', 'free is the watchword of freeCodeCamp', 25);

При помощи CHARINDEX можно найти все продукты, в которых есть слово «computer», выполнив этот запрос:

SELECT * FROM products_data WHERE CHARINDEX('computer', product_name, 0) > 0

Этот запрос диктует следующее: «Начиная с индекса 0 и до тех пор, пока их больше 0, ищи все продукты, названия которых содержат слово «computer», в столбце product_name». Вот результат:

Поиск подстроки в SQL Server с помощью функции PATINDEX

PATINDEX означает «pattern index», т. е. «индекс шаблона». Эта функция позволяет искать подстроку с помощью регулярных выражений.

PATINDEX принимает два аргумента: шаблон и строку. Синтаксис выглядит следующим образом:

PATINDEX(pattern, string)

Если PATINDEX находит совпадение, он возвращает позицию этого совпадения. Если совпадение не найдено, возвращается 0. Вот пример:

SELECT PATINDEX('%ava%', 'JavaScript is a Jack of all trades');

Чтобы применить PATINDEX к таблице, я выполнил следующий запрос:

SELECT product_name, PATINDEX('%ann%', product_name) position
FROM products_data

Но он только перечислил все товары и вернул индекс, под которым нашел совпадение:

Как видите, подстрока «ann» нашлась под индексом 3 продукта Scanner. Но скорее всего вы захотите, чтобы выводился только тот товар, в котором было найдено совпадение с шаблоном.

Чтобы обеспечить такое поведение, можно использовать операторы WHERE и LIKE:

SELECT product_name, PATINDEX('%ann%', product_name) position
FROM products_data
WHERE product_name LIKE '%ann%'

Теперь запрос возвращает то, что нужно.

MySQL-запрос для поиска строки с применением функции SUBSTRING_INDEX()

Помимо решений, которые я уже показал, MySQL имеет встроенную функцию SUBSTRING_INDEX(), с помощью которой можно найти часть строки.

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

Если вы укажете обязательные аргументы, функция SUBSTRING_INDEX() вернет подстроку до n-го разделителя, где n — указанное число вхождений разделителя. Вот пример:

SELECT SUBSTRING_INDEX("Learn on freeCodeCamp with me", "with", 1);

В этом запросе «Learn on freeCodeCamp with me» — это строка, «with» — разделитель, а 1 — количество вхождений разделителя. В этом случае запрос выдаст вам «Learn on freeCodeCamp»:

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

SELECT SUBSTRING_INDEX("Learn on freeCodeCamp with me", "with", -1);

От редакции Techrocks: также предлагаем почитать «Индексы и оптимизация MySQL-запросов».

Заключение

Из этой статьи вы узнали, как найти подстроку в строке в SQL, используя MySQL и SQL Server.

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

Поскольку в MySQL нет CHARINDEX() и PATINDEX(), в первом примере мы рассмотрели, как найти подстроку в строке с помощью операторов WHERE и LIKE.

Перевод статьи «SQL Where Contains String – Substring Query Example».

SQL Where Contains String – Substring Query Example

If you’re working with a database, whether large or small, there might be occasions when you need to search for some entries containing strings.

In this article, I’ll show you how to locate strings and substrings in MySQL and SQL Server.

I‘ll be using a table I call products_data in a products_schema database. Running SELECT * FROM products_data shows me all the entries in the table:

Screenshot-2023-03-23-at-10.39.24

Since I’ll be showing you how to search for a string in SQL Server too, I have the products_data table in a products database:

Screenshot-2023-03-23-at-10.42.05

What We’ll Cover

  • How to Query for Strings in SQL with the WHERE Clause and LIKE Operator
  • How to Query for Strings in SQL Server with the CHARINDEX Function
  • How to Query for Strings in SQL Server with the PATINDEX Function
  • How to Query for Strings in MySQL with the SUBSTRING_INDEX() Function
  • Conclusion

How to Query for Strings in SQL with the WHERE Clause and LIKE Operator

The WHERE clause lets you get only the records that meet a particular condition. The LIKE operator, on the other hand, lets you find a particular pattern in a column. You can combine these two to search for a string or a substring of a string.

I was able to get all the products that have the word “computer” in them by combining the WHERE clause and LIKE operator by running the query below:

SELECT * FROM products_data
WHERE product_name LIKE '%computer%'

Screenshot-2023-03-23-at-11.01.49

The percentage sign before and after the word “computer” means, find the word “computer” whether it’s in the end, middle, or start.

So, if you put the percentage sign at the start of a substring you’re searching by, it means, find that substring at the end of a string. For Example, I got every product that ends with “er” by running this query:

SELECT * FROM products_data
WHERE product_name LIKE '%er'

Screenshot-2023-03-23-at-11.07.53

And if it’s at the end of a string, it means, find that substring at the start of a string. For example, I was able to get the product that starts with “lap” with this query:

SELECT * FROM products_data
WHERE product_name LIKE 'lap%'

Screenshot-2023-03-23-at-11.09.59

This method also works fine in SQL Server:

Screenshot-2023-03-23-at-11.19.51

How to Query for Strings in SQL Server with the CHARINDEX Function

CHARINDEX() is an SQL server function for finding the index of a substring in a string.

The CHARINDEX() function takes 3 arguments – the substring, the string, and the starting position. The syntax looks like this:

CHARINDEX(substring, string, start_position)

If it finds a match, it returns the index where it finds the match, but if it doesn’t find a match, it returns 0. Unlike many other languages, counting in SQL is 1-based.

Here’s an example:

SELECT CHARINDEX('free', 'free is the watchword of freeCodeCamp') position;

Screenshot-2023-03-23-at-12.33.03

You can see the word free was found in position 1. That’s because ‘f’ itself is at position 1:

Screenshot-2023-03-23-at-12.36.22

If I specify 25 as the position, SQL Server would find a match starting from the “freeCodeCamp” text:

SELECT CHARINDEX('free', 'free is the watchword of freeCodeCamp', 25);

Screenshot-2023-03-23-at-12.39.10

I was able to use the CHARINDEX function to search for all products that have the word “computer” in them by running this query:

SELECT * FROM products_data WHERE CHARINDEX('computer', product_name, 0) > 0

That query is saying, start from index 0, as long as they’re more than 0, get me every product that has the word “computer” in them in the product_name column. This is the result:

Screenshot-2023-03-23-at-12.43.31

How to Query for Strings in SQL Server with the PATINDEX Function

PATINDEX stands for “pattern index”. So, with this function, you can search for a substring with regular expressions.

PATINDEX takes two arguments – the pattern and the string. The syntax looks like this:

PATINDEX(pattern, string)

If PATINDEX finds a match, it returns the position of that match. If it doesn’t find a match, it returns 0. Here’s an example:

SELECT PATINDEX('%ava%', 'JavaScript is a Jack of all trades');

Screenshot-2023-03-23-at-12.52.54

To apply PATINDEX to the example table, I ran this query:

SELECT product_name, PATINDEX('%ann%', product_name) position
FROM products_data

But it only listed every product and returned the index where it found the match:

Screenshot-2023-03-23-at-13.08.46

You can see it found the word “ann” at index 3 of the product Scanner. On many occasions, you might not want this behavior because you would want it to show only the item matched.

I made it return only what gets matched by using the WHERE clause and LIKE operator:

SELECT product_name, PATINDEX('%ann%', product_name) position
FROM products_data
WHERE product_name LIKE '%ann%'

Screenshot-2023-03-23-at-13.11.28

Now it’s behaving as you would want.

How to Query for Strings in MySQL with the SUBSTRING_INDEX() Function

Apart from the solutions I’ve already shown you, MySQL has an inbuilt SUBSTRING_INDEX() function with which you can find a part of a string.

The SUBSTRING_INDEX() function takes 3 compulsory arguments – the string, the substring to search for, and a delimiter. The delimiter has to be a number.

When you specify the compulsory arguments, the SUBSTRING_INDEX() function will get you every part of the string that occurs before the delimiter you specify. Here’s an example:

SELECT SUBSTRING_INDEX("Learn on freeCodeCamp with me", "with", 1);

Screenshot-2023-03-23-at-14.14.14

In the query above, “Learn on freeCodeCamp with me” is the string, “with” is the substring and 1 is the delimiter. In this case, the query will get you “Learn on freeCodeCamp”:

The delimiter can also be a negative number. If it’s a negative number, it gets you each part of the string that occurs after the delimiter you specify. Here’s an example:

SELECT SUBSTRING_INDEX("Learn on freeCodeCamp with me", "with", -1);

Screenshot-2023-03-23-at-14.16.09

Conclusion

This article showed you how to locate a substring in a string in SQL using both MySQL and SQL Server.

CHARINDEX() and PATINDEX() are the functions with which you can search for a substring in a string inside SQL Server. PATINDEX() is more powerful because it lets you use regular expressions.

Since CHARINDEX() and PATINDEX() don’t exist in MySQL, the first example showed you how you can find a substring in a string with the WHERE clause and LIKE operator.

Thank you for reading!



Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started

Оператор проверки строки на подобие шаблону
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:

% (процент): последовательность, содержащая любое количество произвольных символов
_ (подчеркивание): один произвольный символ
[…] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок
В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
[^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.

Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.

Например, шаблон “%АБВ[0-9][абвг]_абв%” СПЕЦСИМВОЛ “” означает подстроку, состоящую из последовательности символов:
буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в.

Причем перед этой последовательностью может располагаться произвольный набор символов.

Добавить комментарий